h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h h/solaris-i386.h
BUILT_H=h/new_decl.h o/boot.h h/cmpinclude.h
-C_SRC=o/typespec.c o/alloc.c o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
+C_SRC=o/typespec.c o/alloc.c o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c o/conditional.c o/block.c o/iteration.c\
o/prog.c o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c o/num_comp.c\
o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c o/num_rand.c o/earith.c\
o/array.c o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c\
o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c o/fat_string.c\
- o/run_process.c o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
- o/clxsocket.c o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
- o/bcmp.c o/bcopy.c o/bzero.c o/user_init.c o/user_match.c o/mapfun.c
+ o/run_process.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
+ o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
+ o/user_init.c o/user_match.c o/mapfun.c
+# o/bitop.c o/nfunlink.c o/clxsocket.c
+# o/bcmp.c o/bcopy.c o/bzero.c
D_SRC=o/character.d o/file.d o/gcl_readline.d o/hash.d o/list.d o/package.d o/pathname.d o/print.d\
o/read.d o/sequence.d o/string.d o/symbol.d
( ! echo $@ | grep -q _gprof$$ || echo "(setq compiler::*default-prof-p* t)" >prof_init.lsp ) && \
echo "(system:save-system \"../$@\")" | \
cat ../unixport/init_raw.lsp prof_init.lsp - | \
- GCL_LSPSYSDIR=../$(srcdir)/unixport/ GCL_MEM_BOUND=29 \
+ GCL_LSPSYSDIR=../$(srcdir)/unixport/ \
../unixport/raw_$* $$(dirname $$(pwd))/unixport/ -libdir $$(dirname $$(pwd))/ && \
- rm -f ../unixport/gcl_cmpnopt.lsp #FIXME GCL_MEM_BOUND darwin limited raw heap xcode linker __huge issue
+ rm -f ../unixport/gcl_cmpnopt.lsp
rm -rf sb_$*
unixport/raw_%: unixport/lib%.a $(FF) $(LF)
$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro
+ ! which otool >/dev/null || \
+ ! otool -l $@ |grep -q LC_DYLD_CHAINED_FIXUPS || \
+ ( echo Relinking raw image for mac arm && \
+ $(CC) \
+ $$(otool -l $@ | bin/mac_arm_relink ps=$(SEGMENT_ALIGNMENT_BITS) base=$(TEXT_BASE)) \
+ $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS))
unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\
unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp
$(addprefix unixport/lib,$(addsuffix .a,gcl_gprof ansi_gcl_gprof)): \
unixport/lib%.a:lib/libbase_gcl_gprof.a unixport/sys_%.o
-.POSIX: # parallel job ordering
E0=s typep nr deftype cmptype cmpinline cmpflet
L0=c listlib seqlib type evalmacros
E0_OBJS=$(addprefix gcl_,$(addsuffix .o,$(E0)))
M0_OBJS=$(filter-out $(E0_OBJS) $(L0_OBJS),$(L_OBJS))
L0_OBJS=$(addprefix gcl_,$(addsuffix .o,$(L0)))
+$(addprefix gcl0/,$(L0_OBJS)): | $(addprefix gcl0/,$(M0_OBJS))
+$(addprefix gcl0/,$(M0_OBJS)): | $(addprefix gcl0/,$(E0_OBJS))
unixport/libgcl0.a: $(addprefix gcl0/,$(E0_OBJS) $(M0_OBJS) $(L0_OBJS))
$(addprefix unixport/lib,$(addsuffix .a,gcl1 gcl2 gcl3 gcl)):\
unixport/ansi_gcl: | unixport/saved_pcl_gcl
$(addprefix unixport/,gcl0 gcl1): unixport/% : unixport/cinit.lisp | %
echo "(system:save-system \"$@\")" | cat $< - | $(word 2,$|)
+
$(addprefix unixport/,gcl2 gcl3 gcl mod_gcl): unixport/% : | %
ln -snf $$(basename $(word 2,$|)) $@
$(addprefix gcl0/,$(LC_OBJS)): gcl0/%.o : cmpnew/%.lsp
gcl0/%.o: | unixport/gcl0
rm -f $(@D)/$*.done
- $| -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
- [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
+ $(word 1,$|) -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
+ [ "$*" = "gcl_evalmacros" ] || [ "$*" = "gcl_top" ] || [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
ln -f $@ $$(echo $@ |sed 's,\.o,\.done,g') #FIXME directory link
$(addprefix gcl1/,$(LL_OBJS)): gcl1/%.o : lsp/%.lsp
lib_libbase_gcl_a_RANLIB = $(RANLIB)
lib_libbase_gcl_a_LIBADD =
am__lib_libbase_gcl_a_SOURCES_DIST = o/typespec.c o/alloc.c o/gbc.c \
- o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c \
- o/frame.c o/predicate.c o/reference.c o/assignment.c o/bind.c \
- o/let.c o/conditional.c o/block.c o/iteration.c o/prog.c \
- o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c \
- o/num_pred.c o/num_comp.c o/num_arith.c o/num_sfun.c \
- o/num_co.c o/num_log.c o/num_rand.c o/earith.c o/array.c \
- o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c \
- o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c \
- o/unixsave.c o/funlink.c o/fat_string.c o/run_process.c \
- o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c \
- o/sockets.c o/gmp_wrappers.c o/clxsocket.c o/nsocket.c \
- o/prelink.c o/sfasl.c o/msbrk.c o/bcmp.c o/bcopy.c o/bzero.c \
- o/user_init.c o/user_match.c o/mapfun.c h/compbas2.h \
- h/compbas.h h/compprotos.h h/cstack.h h/enum.h h/error.h \
- h/eval.h h/fixnum.h h/frame.h h/funlink.h h/globals.h \
- h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h h/linux.h \
- h/lu.h h/make-init.h h/mp.h h/notcomp.h h/num_include.h \
- h/object.h h/options.h h/page.h h/pageinfo.h h/pbits.h \
- h/pool.h h/prelink.h h/protoize.h h/ptable.h h/rgbc.h \
- h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h h/writable.h \
- o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h h/bfdef.h \
- h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h o/ntheap.h \
- h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
+ o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c \
+ o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c \
+ o/conditional.c o/block.c o/iteration.c o/prog.c o/multival.c \
+ o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c \
+ o/num_comp.c o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c \
+ o/num_rand.c o/earith.c o/array.c o/regexpr.c o/structure.c \
+ o/toplevel.c o/backq.c o/format.c o/unixfsys.c o/unixfasl.c \
+ o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c \
+ o/fat_string.c o/run_process.c o/usig.c o/usig2.c o/utils.c \
+ o/makefun.c o/sockets.c o/gmp_wrappers.c o/nsocket.c \
+ o/prelink.c o/sfasl.c o/msbrk.c o/user_init.c o/user_match.c \
+ o/mapfun.c h/compbas2.h h/compbas.h h/compprotos.h h/cstack.h \
+ h/enum.h h/error.h h/eval.h h/fixnum.h h/frame.h h/funlink.h \
+ h/globals.h h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h \
+ h/linux.h h/lu.h h/make-init.h h/mp.h h/notcomp.h \
+ h/num_include.h h/object.h h/options.h h/page.h h/pageinfo.h \
+ h/pbits.h h/pool.h h/prelink.h h/protoize.h h/ptable.h \
+ h/rgbc.h h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h \
+ h/writable.h o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h \
+ h/bfdef.h h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h \
+ o/ntheap.h h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h \
h/elf32_arm_reloc.h h/elf32_arm_reloc_special.h \
h/elf32_hppa_reloc.h h/elf32_hppa_reloc_special.h \
h/solaris-i386.h o/boot.c
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_1 = o/typespec.$(OBJEXT) o/alloc.$(OBJEXT) o/gbc.$(OBJEXT) \
- o/bitop.$(OBJEXT) o/main.$(OBJEXT) o/eval.$(OBJEXT) \
- o/macros.$(OBJEXT) o/lex.$(OBJEXT) o/bds.$(OBJEXT) \
- o/frame.$(OBJEXT) o/predicate.$(OBJEXT) o/reference.$(OBJEXT) \
+ o/main.$(OBJEXT) o/eval.$(OBJEXT) o/macros.$(OBJEXT) \
+ o/lex.$(OBJEXT) o/bds.$(OBJEXT) o/frame.$(OBJEXT) \
+ o/predicate.$(OBJEXT) o/reference.$(OBJEXT) \
o/assignment.$(OBJEXT) o/bind.$(OBJEXT) o/let.$(OBJEXT) \
o/conditional.$(OBJEXT) o/block.$(OBJEXT) \
o/iteration.$(OBJEXT) o/prog.$(OBJEXT) o/multival.$(OBJEXT) \
o/unixfasl.$(OBJEXT) o/error.$(OBJEXT) o/unixtime.$(OBJEXT) \
o/unixsys.$(OBJEXT) o/unixsave.$(OBJEXT) o/funlink.$(OBJEXT) \
o/fat_string.$(OBJEXT) o/run_process.$(OBJEXT) \
- o/nfunlink.$(OBJEXT) o/usig.$(OBJEXT) o/usig2.$(OBJEXT) \
- o/utils.$(OBJEXT) o/makefun.$(OBJEXT) o/sockets.$(OBJEXT) \
- o/gmp_wrappers.$(OBJEXT) o/clxsocket.$(OBJEXT) \
- o/nsocket.$(OBJEXT) o/prelink.$(OBJEXT) o/sfasl.$(OBJEXT) \
- o/msbrk.$(OBJEXT) o/bcmp.$(OBJEXT) o/bcopy.$(OBJEXT) \
- o/bzero.$(OBJEXT) o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \
+ o/usig.$(OBJEXT) o/usig2.$(OBJEXT) o/utils.$(OBJEXT) \
+ o/makefun.$(OBJEXT) o/sockets.$(OBJEXT) \
+ o/gmp_wrappers.$(OBJEXT) o/nsocket.$(OBJEXT) \
+ o/prelink.$(OBJEXT) o/sfasl.$(OBJEXT) o/msbrk.$(OBJEXT) \
+ o/user_init.$(OBJEXT) o/user_match.$(OBJEXT) \
o/mapfun.$(OBJEXT)
am__objects_2 =
@AMM_LIBBOOT_FALSE@am__objects_3 = o/boot.$(OBJEXT)
lib_libbase_gcl_gprof_a_RANLIB = $(RANLIB)
lib_libbase_gcl_gprof_a_LIBADD =
am__lib_libbase_gcl_gprof_a_SOURCES_DIST = o/typespec.c o/alloc.c \
- o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c \
- o/frame.c o/predicate.c o/reference.c o/assignment.c o/bind.c \
- o/let.c o/conditional.c o/block.c o/iteration.c o/prog.c \
- o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c \
- o/num_pred.c o/num_comp.c o/num_arith.c o/num_sfun.c \
- o/num_co.c o/num_log.c o/num_rand.c o/earith.c o/array.c \
- o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c \
- o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c \
- o/unixsave.c o/funlink.c o/fat_string.c o/run_process.c \
- o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c \
- o/sockets.c o/gmp_wrappers.c o/clxsocket.c o/nsocket.c \
- o/prelink.c o/sfasl.c o/msbrk.c o/bcmp.c o/bcopy.c o/bzero.c \
- o/user_init.c o/user_match.c o/mapfun.c h/compbas2.h \
- h/compbas.h h/compprotos.h h/cstack.h h/enum.h h/error.h \
- h/eval.h h/fixnum.h h/frame.h h/funlink.h h/globals.h \
- h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h h/linux.h \
- h/lu.h h/make-init.h h/mp.h h/notcomp.h h/num_include.h \
- h/object.h h/options.h h/page.h h/pageinfo.h h/pbits.h \
- h/pool.h h/prelink.h h/protoize.h h/ptable.h h/rgbc.h \
- h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h h/writable.h \
- o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h h/bfdef.h \
- h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h o/ntheap.h \
- h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
+ o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c \
+ o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c \
+ o/conditional.c o/block.c o/iteration.c o/prog.c o/multival.c \
+ o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c \
+ o/num_comp.c o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c \
+ o/num_rand.c o/earith.c o/array.c o/regexpr.c o/structure.c \
+ o/toplevel.c o/backq.c o/format.c o/unixfsys.c o/unixfasl.c \
+ o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c \
+ o/fat_string.c o/run_process.c o/usig.c o/usig2.c o/utils.c \
+ o/makefun.c o/sockets.c o/gmp_wrappers.c o/nsocket.c \
+ o/prelink.c o/sfasl.c o/msbrk.c o/user_init.c o/user_match.c \
+ o/mapfun.c h/compbas2.h h/compbas.h h/compprotos.h h/cstack.h \
+ h/enum.h h/error.h h/eval.h h/fixnum.h h/frame.h h/funlink.h \
+ h/globals.h h/gmp_wrappers.h h/immnum.h h/include.h h/lex.h \
+ h/linux.h h/lu.h h/make-init.h h/mp.h h/notcomp.h \
+ h/num_include.h h/object.h h/options.h h/page.h h/pageinfo.h \
+ h/pbits.h h/pool.h h/prelink.h h/protoize.h h/ptable.h \
+ h/rgbc.h h/sfun_argd.h h/stacks.h h/type.h h/usig.h h/vs.h \
+ h/writable.h o/regexp.h h/arth.h h/bsd.h h/bds.h h/att_ext.h \
+ h/bfdef.h h/compat.h gcl-tk/sheader.h h/make-decl.h h/defun.h \
+ o/ntheap.h h/compdefs.h h/cmpincl1.h h/mgmp.h h/cmponly_last.h \
h/elf32_armhf_reloc.h h/elf32_armhf_reloc_special.h \
h/elf32_arm_reloc.h h/elf32_arm_reloc_special.h \
h/elf32_hppa_reloc.h h/elf32_hppa_reloc_special.h \
am__objects_5 = o/lib_libbase_gcl_gprof_a-typespec.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-alloc.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-gbc.$(OBJEXT) \
- o/lib_libbase_gcl_gprof_a-bitop.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-main.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-eval.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-macros.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-funlink.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-fat_string.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-run_process.$(OBJEXT) \
- o/lib_libbase_gcl_gprof_a-nfunlink.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-usig.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-usig2.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-utils.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-makefun.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-sockets.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-gmp_wrappers.$(OBJEXT) \
- o/lib_libbase_gcl_gprof_a-clxsocket.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-nsocket.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-prelink.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-sfasl.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-msbrk.$(OBJEXT) \
- o/lib_libbase_gcl_gprof_a-bcmp.$(OBJEXT) \
- o/lib_libbase_gcl_gprof_a-bcopy.$(OBJEXT) \
- o/lib_libbase_gcl_gprof_a-bzero.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-user_init.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-user_match.$(OBJEXT) \
o/lib_libbase_gcl_gprof_a-mapfun.$(OBJEXT)
gcl-tk/$(DEPDIR)/gcltkaux-tkAppInit.Po \
gcl-tk/$(DEPDIR)/gcltkaux-tkMain.Po o/$(DEPDIR)/alloc.Po \
o/$(DEPDIR)/array.Po o/$(DEPDIR)/assignment.Po \
- o/$(DEPDIR)/backq.Po o/$(DEPDIR)/bcmp.Po o/$(DEPDIR)/bcopy.Po \
- o/$(DEPDIR)/bds.Po o/$(DEPDIR)/big.Po o/$(DEPDIR)/bind.Po \
- o/$(DEPDIR)/bitop.Po o/$(DEPDIR)/block.Po o/$(DEPDIR)/boot.Po \
- o/$(DEPDIR)/bzero.Po o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.Po \
- o/$(DEPDIR)/character.Po o/$(DEPDIR)/clxsocket.Po \
- o/$(DEPDIR)/cmpaux.Po o/$(DEPDIR)/conditional.Po \
- o/$(DEPDIR)/earith.Po o/$(DEPDIR)/error.Po o/$(DEPDIR)/eval.Po \
+ o/$(DEPDIR)/backq.Po o/$(DEPDIR)/bds.Po o/$(DEPDIR)/big.Po \
+ o/$(DEPDIR)/bind.Po o/$(DEPDIR)/block.Po o/$(DEPDIR)/boot.Po \
+ o/$(DEPDIR)/catch.Po o/$(DEPDIR)/cfun.Po \
+ o/$(DEPDIR)/character.Po o/$(DEPDIR)/cmpaux.Po \
+ o/$(DEPDIR)/conditional.Po o/$(DEPDIR)/earith.Po \
+ o/$(DEPDIR)/error.Po o/$(DEPDIR)/eval.Po \
o/$(DEPDIR)/fat_string.Po o/$(DEPDIR)/file.Po \
o/$(DEPDIR)/format.Po o/$(DEPDIR)/frame.Po \
o/$(DEPDIR)/funlink.Po o/$(DEPDIR)/gbc.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po \
- o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po \
- o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po \
- o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po \
- o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po \
- o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po \
- o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po \
o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po \
o/$(DEPDIR)/macros.Po o/$(DEPDIR)/main.Po \
o/$(DEPDIR)/makefun.Po o/$(DEPDIR)/mapfun.Po \
o/$(DEPDIR)/msbrk.Po o/$(DEPDIR)/multival.Po \
- o/$(DEPDIR)/new_init.Po o/$(DEPDIR)/nfunlink.Po \
- o/$(DEPDIR)/nsocket.Po o/$(DEPDIR)/num_arith.Po \
- o/$(DEPDIR)/num_co.Po o/$(DEPDIR)/num_comp.Po \
- o/$(DEPDIR)/num_log.Po o/$(DEPDIR)/num_pred.Po \
- o/$(DEPDIR)/num_rand.Po o/$(DEPDIR)/num_sfun.Po \
- o/$(DEPDIR)/number.Po o/$(DEPDIR)/package.Po \
- o/$(DEPDIR)/pathname.Po o/$(DEPDIR)/predicate.Po \
- o/$(DEPDIR)/prelink.Po o/$(DEPDIR)/print.Po \
- o/$(DEPDIR)/prog.Po o/$(DEPDIR)/qfv.Po o/$(DEPDIR)/read.Po \
- o/$(DEPDIR)/reference.Po o/$(DEPDIR)/regexpr.Po \
- o/$(DEPDIR)/run_process.Po o/$(DEPDIR)/sequence.Po \
- o/$(DEPDIR)/sfasl.Po o/$(DEPDIR)/sockets.Po \
- o/$(DEPDIR)/string.Po o/$(DEPDIR)/structure.Po \
- o/$(DEPDIR)/symbol.Po o/$(DEPDIR)/toplevel.Po \
- o/$(DEPDIR)/typespec.Po o/$(DEPDIR)/unixfasl.Po \
- o/$(DEPDIR)/unixfsys.Po o/$(DEPDIR)/unixsave.Po \
- o/$(DEPDIR)/unixsys.Po o/$(DEPDIR)/unixtime.Po \
- o/$(DEPDIR)/user_init.Po o/$(DEPDIR)/user_match.Po \
- o/$(DEPDIR)/usig.Po o/$(DEPDIR)/usig2.Po o/$(DEPDIR)/utils.Po \
+ o/$(DEPDIR)/new_init.Po o/$(DEPDIR)/nsocket.Po \
+ o/$(DEPDIR)/num_arith.Po o/$(DEPDIR)/num_co.Po \
+ o/$(DEPDIR)/num_comp.Po o/$(DEPDIR)/num_log.Po \
+ o/$(DEPDIR)/num_pred.Po o/$(DEPDIR)/num_rand.Po \
+ o/$(DEPDIR)/num_sfun.Po o/$(DEPDIR)/number.Po \
+ o/$(DEPDIR)/package.Po o/$(DEPDIR)/pathname.Po \
+ o/$(DEPDIR)/predicate.Po o/$(DEPDIR)/prelink.Po \
+ o/$(DEPDIR)/print.Po o/$(DEPDIR)/prog.Po o/$(DEPDIR)/qfv.Po \
+ o/$(DEPDIR)/read.Po o/$(DEPDIR)/reference.Po \
+ o/$(DEPDIR)/regexpr.Po o/$(DEPDIR)/run_process.Po \
+ o/$(DEPDIR)/sequence.Po o/$(DEPDIR)/sfasl.Po \
+ o/$(DEPDIR)/sockets.Po o/$(DEPDIR)/string.Po \
+ o/$(DEPDIR)/structure.Po o/$(DEPDIR)/symbol.Po \
+ o/$(DEPDIR)/toplevel.Po o/$(DEPDIR)/typespec.Po \
+ o/$(DEPDIR)/unixfasl.Po o/$(DEPDIR)/unixfsys.Po \
+ o/$(DEPDIR)/unixsave.Po o/$(DEPDIR)/unixsys.Po \
+ o/$(DEPDIR)/unixtime.Po o/$(DEPDIR)/user_init.Po \
+ o/$(DEPDIR)/user_match.Po o/$(DEPDIR)/usig.Po \
+ o/$(DEPDIR)/usig2.Po o/$(DEPDIR)/utils.Po \
xgcl-2/$(DEPDIR)/Events.Po xgcl-2/$(DEPDIR)/XStruct-2.Po \
xgcl-2/$(DEPDIR)/XStruct-4.Po xgcl-2/$(DEPDIR)/Xutil-2.Po \
xgcl-2/$(DEPDIR)/general-c.Po \
RANLIB = @RANLIB@
RL_LIB = @RL_LIB@
RL_OBJS = @RL_OBJS@
+SEGMENT_ALIGNMENT_BITS = @SEGMENT_ALIGNMENT_BITS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TCL_INCLUDE = @TCL_INCLUDE@
TCL_LIBRARY = @TCL_LIBRARY@
TCL_LIB_SPEC = @TCL_LIB_SPEC@
+TEXT_BASE = @TEXT_BASE@
TK_CONFIG_PREFIX = @TK_CONFIG_PREFIX@
TK_INCLUDE = @TK_INCLUDE@
TK_LIBRARY = @TK_LIBRARY@
h/386-macosx.h h/mingw.h h/gnuwin95.h h/FreeBSD.h h/solaris.h h/solaris-i386.h
BUILT_H = h/new_decl.h o/boot.h h/cmpinclude.h
-C_SRC = o/typespec.c o/alloc.c o/gbc.c o/bitop.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
+C_SRC = o/typespec.c o/alloc.c o/gbc.c o/main.c o/eval.c o/macros.c o/lex.c o/bds.c o/frame.c\
o/predicate.c o/reference.c o/assignment.c o/bind.c o/let.c o/conditional.c o/block.c o/iteration.c\
o/prog.c o/multival.c o/catch.c o/cfun.c o/cmpaux.c o/big.c o/number.c o/num_pred.c o/num_comp.c\
o/num_arith.c o/num_sfun.c o/num_co.c o/num_log.c o/num_rand.c o/earith.c\
o/array.c o/regexpr.c o/structure.c o/toplevel.c o/backq.c o/format.c\
o/unixfsys.c o/unixfasl.c o/error.c o/unixtime.c o/unixsys.c o/unixsave.c o/funlink.c o/fat_string.c\
- o/run_process.c o/nfunlink.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
- o/clxsocket.c o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
- o/bcmp.c o/bcopy.c o/bzero.c o/user_init.c o/user_match.c o/mapfun.c
+ o/run_process.c o/usig.c o/usig2.c o/utils.c o/makefun.c o/sockets.c o/gmp_wrappers.c\
+ o/nsocket.c o/prelink.c o/sfasl.c o/msbrk.c \
+ o/user_init.c o/user_match.c o/mapfun.c
+# o/bitop.c o/nfunlink.c o/clxsocket.c
+# o/bcmp.c o/bcopy.c o/bzero.c
D_SRC = o/character.d o/file.d o/gcl_readline.d o/hash.d o/list.d o/package.d o/pathname.d o/print.d\
o/read.d o/sequence.d o/string.d o/symbol.d
o/typespec.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/alloc.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/gbc.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bitop.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/main.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/eval.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/macros.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/funlink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/fat_string.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/run_process.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/nfunlink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/usig.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/usig2.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/utils.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/sockets.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/gmp_wrappers.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
-o/clxsocket.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/nsocket.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/prelink.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/sfasl.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/msbrk.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bcmp.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bcopy.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
-o/bzero.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/user_init.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/user_match.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/mapfun.$(OBJEXT): o/$(am__dirstamp) o/$(DEPDIR)/$(am__dirstamp)
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-gbc.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bitop.$(OBJEXT): o/$(am__dirstamp) \
- o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-main.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-eval.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-run_process.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-nfunlink.$(OBJEXT): o/$(am__dirstamp) \
- o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-usig.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-usig2.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-gmp_wrappers.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-clxsocket.$(OBJEXT): o/$(am__dirstamp) \
- o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-nsocket.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-prelink.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-msbrk.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bcmp.$(OBJEXT): o/$(am__dirstamp) \
- o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bcopy.$(OBJEXT): o/$(am__dirstamp) \
- o/$(DEPDIR)/$(am__dirstamp)
-o/lib_libbase_gcl_gprof_a-bzero.$(OBJEXT): o/$(am__dirstamp) \
- o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-user_init.$(OBJEXT): o/$(am__dirstamp) \
o/$(DEPDIR)/$(am__dirstamp)
o/lib_libbase_gcl_gprof_a-user_match.$(OBJEXT): o/$(am__dirstamp) \
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/array.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/assignment.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/backq.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bcmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bcopy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bds.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/big.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bitop.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/block.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/boot.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/bzero.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/catch.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/cfun.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/character.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/clxsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/cmpaux.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/conditional.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/earith.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/msbrk.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/multival.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/new_init.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/nfunlink.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/nsocket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/num_arith.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@o/$(DEPDIR)/num_co.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-gbc.obj `if test -f 'o/gbc.c'; then $(CYGPATH_W) 'o/gbc.c'; else $(CYGPATH_W) '$(srcdir)/o/gbc.c'; fi`
-o/lib_libbase_gcl_gprof_a-bitop.o: o/bitop.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bitop.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo -c -o o/lib_libbase_gcl_gprof_a-bitop.o `test -f 'o/bitop.c' || echo '$(srcdir)/'`o/bitop.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bitop.c' object='o/lib_libbase_gcl_gprof_a-bitop.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bitop.o `test -f 'o/bitop.c' || echo '$(srcdir)/'`o/bitop.c
-
-o/lib_libbase_gcl_gprof_a-bitop.obj: o/bitop.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bitop.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo -c -o o/lib_libbase_gcl_gprof_a-bitop.obj `if test -f 'o/bitop.c'; then $(CYGPATH_W) 'o/bitop.c'; else $(CYGPATH_W) '$(srcdir)/o/bitop.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bitop.c' object='o/lib_libbase_gcl_gprof_a-bitop.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bitop.obj `if test -f 'o/bitop.c'; then $(CYGPATH_W) 'o/bitop.c'; else $(CYGPATH_W) '$(srcdir)/o/bitop.c'; fi`
-
o/lib_libbase_gcl_gprof_a-main.o: o/main.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-main.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Tpo -c -o o/lib_libbase_gcl_gprof_a-main.o `test -f 'o/main.c' || echo '$(srcdir)/'`o/main.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-main.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-run_process.obj `if test -f 'o/run_process.c'; then $(CYGPATH_W) 'o/run_process.c'; else $(CYGPATH_W) '$(srcdir)/o/run_process.c'; fi`
-o/lib_libbase_gcl_gprof_a-nfunlink.o: o/nfunlink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nfunlink.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo -c -o o/lib_libbase_gcl_gprof_a-nfunlink.o `test -f 'o/nfunlink.c' || echo '$(srcdir)/'`o/nfunlink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/nfunlink.c' object='o/lib_libbase_gcl_gprof_a-nfunlink.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-nfunlink.o `test -f 'o/nfunlink.c' || echo '$(srcdir)/'`o/nfunlink.c
-
-o/lib_libbase_gcl_gprof_a-nfunlink.obj: o/nfunlink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nfunlink.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo -c -o o/lib_libbase_gcl_gprof_a-nfunlink.obj `if test -f 'o/nfunlink.c'; then $(CYGPATH_W) 'o/nfunlink.c'; else $(CYGPATH_W) '$(srcdir)/o/nfunlink.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/nfunlink.c' object='o/lib_libbase_gcl_gprof_a-nfunlink.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-nfunlink.obj `if test -f 'o/nfunlink.c'; then $(CYGPATH_W) 'o/nfunlink.c'; else $(CYGPATH_W) '$(srcdir)/o/nfunlink.c'; fi`
-
o/lib_libbase_gcl_gprof_a-usig.o: o/usig.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-usig.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Tpo -c -o o/lib_libbase_gcl_gprof_a-usig.o `test -f 'o/usig.c' || echo '$(srcdir)/'`o/usig.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-usig.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-gmp_wrappers.obj `if test -f 'o/gmp_wrappers.c'; then $(CYGPATH_W) 'o/gmp_wrappers.c'; else $(CYGPATH_W) '$(srcdir)/o/gmp_wrappers.c'; fi`
-o/lib_libbase_gcl_gprof_a-clxsocket.o: o/clxsocket.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-clxsocket.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-clxsocket.o `test -f 'o/clxsocket.c' || echo '$(srcdir)/'`o/clxsocket.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/clxsocket.c' object='o/lib_libbase_gcl_gprof_a-clxsocket.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-clxsocket.o `test -f 'o/clxsocket.c' || echo '$(srcdir)/'`o/clxsocket.c
-
-o/lib_libbase_gcl_gprof_a-clxsocket.obj: o/clxsocket.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-clxsocket.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-clxsocket.obj `if test -f 'o/clxsocket.c'; then $(CYGPATH_W) 'o/clxsocket.c'; else $(CYGPATH_W) '$(srcdir)/o/clxsocket.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/clxsocket.c' object='o/lib_libbase_gcl_gprof_a-clxsocket.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-clxsocket.obj `if test -f 'o/clxsocket.c'; then $(CYGPATH_W) 'o/clxsocket.c'; else $(CYGPATH_W) '$(srcdir)/o/clxsocket.c'; fi`
-
o/lib_libbase_gcl_gprof_a-nsocket.o: o/nsocket.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-nsocket.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Tpo -c -o o/lib_libbase_gcl_gprof_a-nsocket.o `test -f 'o/nsocket.c' || echo '$(srcdir)/'`o/nsocket.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-msbrk.obj `if test -f 'o/msbrk.c'; then $(CYGPATH_W) 'o/msbrk.c'; else $(CYGPATH_W) '$(srcdir)/o/msbrk.c'; fi`
-o/lib_libbase_gcl_gprof_a-bcmp.o: o/bcmp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcmp.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcmp.o `test -f 'o/bcmp.c' || echo '$(srcdir)/'`o/bcmp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcmp.c' object='o/lib_libbase_gcl_gprof_a-bcmp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcmp.o `test -f 'o/bcmp.c' || echo '$(srcdir)/'`o/bcmp.c
-
-o/lib_libbase_gcl_gprof_a-bcmp.obj: o/bcmp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcmp.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcmp.obj `if test -f 'o/bcmp.c'; then $(CYGPATH_W) 'o/bcmp.c'; else $(CYGPATH_W) '$(srcdir)/o/bcmp.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcmp.c' object='o/lib_libbase_gcl_gprof_a-bcmp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcmp.obj `if test -f 'o/bcmp.c'; then $(CYGPATH_W) 'o/bcmp.c'; else $(CYGPATH_W) '$(srcdir)/o/bcmp.c'; fi`
-
-o/lib_libbase_gcl_gprof_a-bcopy.o: o/bcopy.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcopy.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcopy.o `test -f 'o/bcopy.c' || echo '$(srcdir)/'`o/bcopy.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcopy.c' object='o/lib_libbase_gcl_gprof_a-bcopy.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcopy.o `test -f 'o/bcopy.c' || echo '$(srcdir)/'`o/bcopy.c
-
-o/lib_libbase_gcl_gprof_a-bcopy.obj: o/bcopy.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bcopy.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo -c -o o/lib_libbase_gcl_gprof_a-bcopy.obj `if test -f 'o/bcopy.c'; then $(CYGPATH_W) 'o/bcopy.c'; else $(CYGPATH_W) '$(srcdir)/o/bcopy.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bcopy.c' object='o/lib_libbase_gcl_gprof_a-bcopy.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bcopy.obj `if test -f 'o/bcopy.c'; then $(CYGPATH_W) 'o/bcopy.c'; else $(CYGPATH_W) '$(srcdir)/o/bcopy.c'; fi`
-
-o/lib_libbase_gcl_gprof_a-bzero.o: o/bzero.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bzero.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo -c -o o/lib_libbase_gcl_gprof_a-bzero.o `test -f 'o/bzero.c' || echo '$(srcdir)/'`o/bzero.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bzero.c' object='o/lib_libbase_gcl_gprof_a-bzero.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bzero.o `test -f 'o/bzero.c' || echo '$(srcdir)/'`o/bzero.c
-
-o/lib_libbase_gcl_gprof_a-bzero.obj: o/bzero.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-bzero.obj -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo -c -o o/lib_libbase_gcl_gprof_a-bzero.obj `if test -f 'o/bzero.c'; then $(CYGPATH_W) 'o/bzero.c'; else $(CYGPATH_W) '$(srcdir)/o/bzero.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='o/bzero.c' object='o/lib_libbase_gcl_gprof_a-bzero.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -c -o o/lib_libbase_gcl_gprof_a-bzero.obj `if test -f 'o/bzero.c'; then $(CYGPATH_W) 'o/bzero.c'; else $(CYGPATH_W) '$(srcdir)/o/bzero.c'; fi`
-
o/lib_libbase_gcl_gprof_a-user_init.o: o/user_init.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libbase_gcl_gprof_a_CPPFLAGS) $(CPPFLAGS) $(lib_libbase_gcl_gprof_a_CFLAGS) $(CFLAGS) -MT o/lib_libbase_gcl_gprof_a-user_init.o -MD -MP -MF o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Tpo -c -o o/lib_libbase_gcl_gprof_a-user_init.o `test -f 'o/user_init.c' || echo '$(srcdir)/'`o/user_init.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Tpo o/$(DEPDIR)/lib_libbase_gcl_gprof_a-user_init.Po
-rm -f o/$(DEPDIR)/array.Po
-rm -f o/$(DEPDIR)/assignment.Po
-rm -f o/$(DEPDIR)/backq.Po
- -rm -f o/$(DEPDIR)/bcmp.Po
- -rm -f o/$(DEPDIR)/bcopy.Po
-rm -f o/$(DEPDIR)/bds.Po
-rm -f o/$(DEPDIR)/big.Po
-rm -f o/$(DEPDIR)/bind.Po
- -rm -f o/$(DEPDIR)/bitop.Po
-rm -f o/$(DEPDIR)/block.Po
-rm -f o/$(DEPDIR)/boot.Po
- -rm -f o/$(DEPDIR)/bzero.Po
-rm -f o/$(DEPDIR)/catch.Po
-rm -f o/$(DEPDIR)/cfun.Po
-rm -f o/$(DEPDIR)/character.Po
- -rm -f o/$(DEPDIR)/clxsocket.Po
-rm -f o/$(DEPDIR)/cmpaux.Po
-rm -f o/$(DEPDIR)/conditional.Po
-rm -f o/$(DEPDIR)/earith.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po
-rm -f o/$(DEPDIR)/msbrk.Po
-rm -f o/$(DEPDIR)/multival.Po
-rm -f o/$(DEPDIR)/new_init.Po
- -rm -f o/$(DEPDIR)/nfunlink.Po
-rm -f o/$(DEPDIR)/nsocket.Po
-rm -f o/$(DEPDIR)/num_arith.Po
-rm -f o/$(DEPDIR)/num_co.Po
-rm -f o/$(DEPDIR)/array.Po
-rm -f o/$(DEPDIR)/assignment.Po
-rm -f o/$(DEPDIR)/backq.Po
- -rm -f o/$(DEPDIR)/bcmp.Po
- -rm -f o/$(DEPDIR)/bcopy.Po
-rm -f o/$(DEPDIR)/bds.Po
-rm -f o/$(DEPDIR)/big.Po
-rm -f o/$(DEPDIR)/bind.Po
- -rm -f o/$(DEPDIR)/bitop.Po
-rm -f o/$(DEPDIR)/block.Po
-rm -f o/$(DEPDIR)/boot.Po
- -rm -f o/$(DEPDIR)/bzero.Po
-rm -f o/$(DEPDIR)/catch.Po
-rm -f o/$(DEPDIR)/cfun.Po
-rm -f o/$(DEPDIR)/character.Po
- -rm -f o/$(DEPDIR)/clxsocket.Po
-rm -f o/$(DEPDIR)/cmpaux.Po
-rm -f o/$(DEPDIR)/conditional.Po
-rm -f o/$(DEPDIR)/earith.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-array.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-assignment.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-backq.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcmp.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bcopy.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bds.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-big.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bind.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bitop.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-block.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-boot.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-bzero.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-catch.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cfun.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-character.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-clxsocket.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-cmpaux.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-conditional.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-earith.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-msbrk.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-multival.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-new_init.Po
- -rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nfunlink.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-nsocket.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_arith.Po
-rm -f o/$(DEPDIR)/lib_libbase_gcl_gprof_a-num_co.Po
-rm -f o/$(DEPDIR)/msbrk.Po
-rm -f o/$(DEPDIR)/multival.Po
-rm -f o/$(DEPDIR)/new_init.Po
- -rm -f o/$(DEPDIR)/nfunlink.Po
-rm -f o/$(DEPDIR)/nsocket.Po
-rm -f o/$(DEPDIR)/num_arith.Po
-rm -f o/$(DEPDIR)/num_co.Po
( ! echo $@ | grep -q _gprof$$ || echo "(setq compiler::*default-prof-p* t)" >prof_init.lsp ) && \
echo "(system:save-system \"../$@\")" | \
cat ../unixport/init_raw.lsp prof_init.lsp - | \
- GCL_LSPSYSDIR=../$(srcdir)/unixport/ GCL_MEM_BOUND=29 \
+ GCL_LSPSYSDIR=../$(srcdir)/unixport/ \
../unixport/raw_$* $$(dirname $$(pwd))/unixport/ -libdir $$(dirname $$(pwd))/ && \
- rm -f ../unixport/gcl_cmpnopt.lsp #FIXME GCL_MEM_BOUND darwin limited raw heap xcode linker __huge issue
+ rm -f ../unixport/gcl_cmpnopt.lsp
rm -rf sb_$*
unixport/raw_%: unixport/lib%.a $(FF) $(LF)
$(CC) $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS) #FIXME relro
+ ! which otool >/dev/null || \
+ ! otool -l $@ |grep -q LC_DYLD_CHAINED_FIXUPS || \
+ ( echo Relinking raw image for mac arm && \
+ $(CC) \
+ $$(otool -l $@ | bin/mac_arm_relink ps=$(SEGMENT_ALIGNMENT_BITS) base=$(TEXT_BASE)) \
+ $(AM_LDFLAGS) -rdynamic $(LDFLAGS) -o $@ $(FF) $< $(LF) $(LIBS))
unixport/gcl_cmpnopt_gcl_gprof.lsp unixport/gcl_cmpnopt_ansi_gcl_gprof.lsp:\
unixport/gcl_cmpnopt_%_gprof.lsp: unixport/gcl_cmpnopt_%.lsp
unixport/lib%.a: lib/libbase_gcl.a $(LIBGPROF) unixport/sys_%.o
$(addprefix unixport/lib,$(addsuffix .a,gcl_gprof ansi_gcl_gprof)): \
unixport/lib%.a:lib/libbase_gcl_gprof.a unixport/sys_%.o
-
-.POSIX: # parallel job ordering
+$(addprefix gcl0/,$(L0_OBJS)): | $(addprefix gcl0/,$(M0_OBJS))
+$(addprefix gcl0/,$(M0_OBJS)): | $(addprefix gcl0/,$(E0_OBJS))
unixport/libgcl0.a: $(addprefix gcl0/,$(E0_OBJS) $(M0_OBJS) $(L0_OBJS))
$(addprefix unixport/lib,$(addsuffix .a,gcl1 gcl2 gcl3 gcl)):\
unixport/ansi_gcl: | unixport/saved_pcl_gcl
$(addprefix unixport/,gcl0 gcl1): unixport/% : unixport/cinit.lisp | %
echo "(system:save-system \"$@\")" | cat $< - | $(word 2,$|)
+
$(addprefix unixport/,gcl2 gcl3 gcl mod_gcl): unixport/% : | %
ln -snf $$(basename $(word 2,$|)) $@
$(addprefix gcl0/,$(LC_OBJS)): gcl0/%.o : cmpnew/%.lsp
gcl0/%.o: | unixport/gcl0
rm -f $(@D)/$*.done
- $| -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
- [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
+ $(word 1,$|) -eval "(mapc 'load (directory \"$(@D)/*.done\"))" -compile $< -o $@
+ [ "$*" = "gcl_evalmacros" ] || [ "$*" = "gcl_top" ] || [ "$*" = "gcl_c" ] || [ "$*" = "gcl_listlib" ] || \
ln -f $@ $$(echo $@ |sed 's,\.o,\.done,g') #FIXME directory link
$(addprefix gcl1/,$(LL_OBJS)): gcl1/%.o : lsp/%.lsp
--- /dev/null
+#!/usr/bin/awk -f
+
+function from_hex (hh) {
+ jj=0;
+ if (substr(hh,1,2)=="0x")
+ hh=substr(hh,3,length(hh));
+ for (ii=1;ii<=length(hh);ii++)
+ jj=jj*16+A[substr(hh,ii,1)];
+ return jj;
+}
+function to_hex(jj) {
+ ss="";
+ for (;jj;jj=kk) {
+ kk=int(jj/16);
+ ss=substr(z,jj-kk*16+1,1) ss;
+ }
+ return ss;
+}
+
+
+BEGIN{z="0123456789abcdef";for (i=1;i<=length(z);i++) A[substr(z,i,1)]=i-1;}
+/^ *cmd / {c=$2;next}
+/^ *segname/ {n=$2;next}
+/^ *vmsize/ {if (c=="LC_SEGMENT_64") A[n]=$2;}
+END {
+ p=1;
+ for (i=0;i<ps;i++) p=p*2;
+ j="-Wl,-no_fixup_chains -Wl,-segaddr,__TEXT," base;
+ dc=from_hex(base);
+ dc=int((dc+from_hex(A["__TEXT"])+p+p-1)/p)*p;
+ j=j " -Wl,-segaddr,__DATA_CONST,0x" to_hex(dc);
+ dc=int((dc+from_hex(A["__DATA_CONST"])+p+p-1)/p)*p;
+ j=j " -Wl,-segaddr,__DATA,0x" to_hex(dc);
+ dc=int((dc+from_hex(A["__DATA"])+p+p-1)/p)*p;
+ j=j " -Wl,-segaddr,__HEAP,0x" to_hex(dc);
+ print j;
+}
(list (make-list (length all) :initial-element t)
'* #.(flags ans set svt)
(ms
- "({object _z,_f=fcall.fun=#0;fixnum _v=fcall.valp=(fixnum)#v;char _n=fcall.argd=#n-1;
+ "({object _z,_f=fcall.fun=#0;fixnum _v=fcall.valp=(fixnum)#v;volatile char _n=fcall.argd=#n-1;
_n=Rset &&
!_f->fun.fun_argd &&
_n>=_f->fun.fun_minarg &&
(ms
"({fixnum _v=(fixnum)#v;object _z,_f=(#0),_l=(#1),_ll=_l;
object _x4=Cnil,_x3=Cnil,_x2=Cnil,_x1=Cnil,_x0=Cnil;
- char _m=(#n-2),_n=Rset && !_f->fun.fun_argd ? _f->fun.fun_minarg-_m : -(MAX_ARGS+1);
+ char _m=(#n-2);volatile char _n=Rset && !_f->fun.fun_argd ? _f->fun.fun_minarg-_m : -(MAX_ARGS+1);
char _reg=_f->fun.fun_minarg==_f->fun.fun_maxarg;
fcall.fun=_f;fcall.valp=_v;fcall.argd=-(#n-1);
switch (_n) {
(unless (tag-p form)
(mapc (lambda (x)
(when (var-p x)
- (incf (var-register x) (the fixnum *reg-amount*))))
+ (unless (>= (var-register x) (ash (the fixnum *reg-amount*) 2))
+ (incf (var-register x) (the fixnum *reg-amount*)))))
(info-ref (cadr form)))))
(defun intersection-p (l1 l2)
(defun range-decomp (tp)
(mapcan (lambda (x &aux (f (pop x))(z (type-and tp x))) (when z (list (cons f z)))) +cmp-range-types+))
+(defun allocate-basic-stream-propagator (f tp)
+ (declare (ignore f))
+ (reduce
+ (lambda (y x)
+ (if (type-and (car x) tp)
+ (type-or1 (cadr x) y)
+ y))
+ '#.(mapcar (lambda (x) (list (object-tp x) (cmp-norm-tp (type-of (allocate-basic-stream x)))))
+ (let ((i -1))
+ (mapl (lambda (x) (setf (car x) (incf i))) (make-list (si::btp-count #tstream)))))
+ :initial-value nil))
+(si::putprop 'allocate-basic-stream 'allocate-basic-stream-propagator 'type-propagator)
(dolist (l '(si::number-plus si::number-minus si::number-times + - * exp tanh sinh asinh))
(si::putprop l 'super-range 'type-propagator))
HAVE_MALLOC_ZONE_MEMALIGN
AMM_GPROF_FALSE
AMM_GPROF_TRUE
+SEGMENT_ALIGNMENT_BITS
+TEXT_BASE
GCL_CC
CPP
RANLIB
enable_static
enable_pic
enable_dependency_tracking
+enable_text_base
+enable_segment_alignment_bits
+enable_initial_heap_vmsize
+enable_saved_pre_image_span
+enable_saved_image_span
enable_gprof
with_x
enable_xdr
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
-put bootstrap code in shared library to be discarded
+ --enable-libtool will put bootstrap code in shared library to be discarded
--enable-machine=XXXX will force the use of one of the definitions in h/XXXX.defs
--enable-widecons will use a three word cons with simplified typing
--enable-safecdr will protect cdr from immfix and speed up type processing
--enable-bdssize=XXXX will compile in a binding stack of size XXX
--enable-ihssize=XXXX will compile in a invocation history stack of size XXX
--enable-frssize=XXXX will compile in a frame stack of size XXX
---enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info
+ --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info
--enable-xgcl=yes will compile in support for XGCL
--enable-debug builds gcl with -g in CFLAGS to enable running under gdb
--enable-static will link your GCL against static as opposed to shared system libraries
do not reject slow dependency extractors
--disable-dependency-tracking
speeds up one-time build
+ --enable-text_base=0x.... set base address for __TEXT
+ --enable-segment_alignment_bits=... set bit alignment for mach-o image segments
+ --enable-initial_heap_vmsize=0x.... set heap size for raw images
+ --enable-saved_pre_image_span=0x.... set address span for saved pre images
+ --enable-saved_image_span=0x.... set address span for saved images
--enable-gprof builds gcl with -pg in CFLAGS to enable profiling with gprof
--enable-xdr=yes will compile in support for XDR
--enable-immfix will enable an immediate fixnum table above the C stack
--enable-fastimmfix=XXXX will reject low immediate fixnums unless 2^XXX can be attained
- --enable-min_pagewidth=xxx sets 1<<xxx byte pages
+ --enable-min_pagewidth=xxx sets 1<<xxx byte pages
--enable-readline enables command line completion via the readline library
--enable-tcltk will try to build gcl-tk
--enable-tkconfig=XXXX will force the use of a TK_CONFIG_PREFIX=XXXXX as place to look for tkConfig.sh and tclConfig.sh
powerpc*linux*) use=powerpc-linux;;
powerpc-*-darwin*) use=powerpc-macosx;;
*86*darwin*) use=386-macosx;;
+ *aarch64*darwin*) use=aarch64-macosx;;
i*mingw*|i*msys*) use=mingw;;
*cygwin*)
if $CC -v 2>&1 | fgrep ming > /dev/null ;
386-macosx)
# assert_arg_to_cflags -Wno-error=implicit-function-declaration
add_arg_to_cflags -Wno-incomplete-setjmp-declaration
- assert_arg_to_ldflags -Wl,-no_pie
+ assert_arg_to_ldflags -Wl,-no_pie #FIXME remove
if test "$build_cpu" = "x86_64" ; then
assert_arg_to_cflags -m64
assert_arg_to_ldflags -m64
assert_arg_to_ldflags -m32
assert_arg_to_ldflags -Wl,-headerpad,56
fi;;
+ aarch64-macosx)
+# LISP_CFLAGS="$LISP_CFLAGS -mcmodel=large" #fixme 26bit trampolines
+ # Check whether --enable-text_base was given.
+if test ${enable_text_base+y}
+then :
+ enableval=$enable_text_base; TEXT_BASE=$enableval
+else case e in #(
+ e) TEXT_BASE=0x10000000000 ;;
+esac
+fi
+
+
+ # Check whether --enable-segment_alignment_bits was given.
+if test ${enable_segment_alignment_bits+y}
+then :
+ enableval=$enable_segment_alignment_bits; SEGMENT_ALIGNMENT_BITS=$enableval
+else case e in #(
+ e) SEGMENT_ALIGNMENT_BITS=14 ;;
+esac
+fi
+
+
+ ;;
FreeBSD) assert_arg_to_ldflags -Z;;
esac
+case $use in
+ *macosx*)
+ # Check whether --enable-initial_heap_vmsize was given.
+if test ${enable_initial_heap_vmsize+y}
+then :
+ enableval=$enable_initial_heap_vmsize; INITIAL_HEAP_VMSIZE=$enableval
+else case e in #(
+ e) INITIAL_HEAP_VMSIZE=0x70000000 ;;
+esac
+fi
+
+
+printf "%s\n" "#define INITIAL_HEAP_VMSIZE $INITIAL_HEAP_VMSIZE" >>confdefs.h
+
+
+ #Support libboot option
+ # Check whether --enable-saved_pre_image_span was given.
+if test ${enable_saved_pre_image_span+y}
+then :
+ enableval=$enable_saved_pre_image_span; SAVED_PRE_IMAGE_SPAN=$enableval
+else case e in #(
+ e) SAVED_PRE_IMAGE_SPAN=0x100000000 ;;
+esac
+fi
+
+
+printf "%s\n" "#define SAVED_PRE_IMAGE_SPAN $SAVED_PRE_IMAGE_SPAN" >>confdefs.h
+
+
+ # Check whether --enable-saved_image_span was given.
+if test ${enable_saved_image_span+y}
+then :
+ enableval=$enable_saved_image_span; SAVED_IMAGE_SPAN=$enableval
+else case e in #(
+ e) SAVED_IMAGE_SPAN=0x2000000000 ;;
+esac
+fi
+
+
+printf "%s\n" "#define SAVED_IMAGE_SPAN $SAVED_IMAGE_SPAN" >>confdefs.h
+
+ ;;
+esac
+
if test "$enable_static" = "yes" ; then
assert_arg_to_ldflags -static
assert_arg_to_ldflags -Wl,-zmuldefs
LI_RELEASE="$RELEASE"
+#LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS $LISP_CFLAGS" | sed 's,-pg\b,,g'`\""
LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS" | sed 's,-pg\b,,g'`\""
LI_DFP="\"$GPL_FLAG\""
powerpc*linux*) use=powerpc-linux;;
powerpc-*-darwin*) use=powerpc-macosx;;
*86*darwin*) use=386-macosx;;
+ *aarch64*darwin*) use=aarch64-macosx;;
i*mingw*|i*msys*) use=mingw;;
*cygwin*)
if $CC -v 2>&1 | fgrep ming > /dev/null ;
i?86-pc-solaris*) use=solaris-i386;;
esac
-AC_ARG_ENABLE([libboot],[put bootstrap code in shared library to be discarded],
+AC_ARG_ENABLE([libboot],[ --enable-libtool will put bootstrap code in shared library to be discarded],
[libboot=$enableval],[libboot="yes"])
if test "$use" = "gnuwin95" ; then
AC_ARG_ENABLE([frssize],[ --enable-frssize=XXXX will compile in a frame stack of size XXX],
[AC_DEFINE_UNQUOTED(FRSSIZE,$enableval,[frame stack size])])
-AC_ARG_ENABLE([infodir],[--enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info],
+AC_ARG_ENABLE([infodir],[ --enable-infodir=XXXX will force the use of a INFO_DIR=XXXXX as place to look for info],
[INFO_DIR=$enableval],[INFO_DIR=$prefix/share/info])
INFO_DIR=`eval echo $INFO_DIR/`
386-macosx)
# assert_arg_to_cflags -Wno-error=implicit-function-declaration
add_arg_to_cflags -Wno-incomplete-setjmp-declaration
- assert_arg_to_ldflags -Wl,-no_pie
+ assert_arg_to_ldflags -Wl,-no_pie #FIXME remove
if test "$build_cpu" = "x86_64" ; then
assert_arg_to_cflags -m64
assert_arg_to_ldflags -m64
assert_arg_to_ldflags -m32
assert_arg_to_ldflags -Wl,-headerpad,56
fi;;
+ aarch64-macosx)
+# LISP_CFLAGS="$LISP_CFLAGS -mcmodel=large" #fixme 26bit trampolines
+ AC_ARG_ENABLE([text_base],[ --enable-text_base=0x.... set base address for __TEXT],
+ [TEXT_BASE=$enableval],[TEXT_BASE=0x10000000000])
+ AC_SUBST(TEXT_BASE)
+ AC_ARG_ENABLE([segment_alignment_bits],[ --enable-segment_alignment_bits=... set bit alignment for mach-o image segments],
+ [SEGMENT_ALIGNMENT_BITS=$enableval],[SEGMENT_ALIGNMENT_BITS=14])
+ AC_SUBST(SEGMENT_ALIGNMENT_BITS)
+ ;;
FreeBSD) assert_arg_to_ldflags -Z;;
esac
+case $use in
+ *macosx*)
+ AC_ARG_ENABLE([initial_heap_vmsize],[ --enable-initial_heap_vmsize=0x.... set heap size for raw images],
+ [INITIAL_HEAP_VMSIZE=$enableval],[INITIAL_HEAP_VMSIZE=0x70000000])
+ AC_DEFINE_UNQUOTED(INITIAL_HEAP_VMSIZE,$INITIAL_HEAP_VMSIZE,[heap size for raw images])
+
+ #Support libboot option
+ AC_ARG_ENABLE([saved_pre_image_span],[ --enable-saved_pre_image_span=0x.... set address span for saved pre images],
+ [SAVED_PRE_IMAGE_SPAN=$enableval],[SAVED_PRE_IMAGE_SPAN=0x100000000])
+ AC_DEFINE_UNQUOTED(SAVED_PRE_IMAGE_SPAN,$SAVED_PRE_IMAGE_SPAN,[address span for saved pre images])
+
+ AC_ARG_ENABLE([saved_image_span],[ --enable-saved_image_span=0x.... set address span for saved images],
+ [SAVED_IMAGE_SPAN=$enableval],[SAVED_IMAGE_SPAN=0x2000000000])
+ AC_DEFINE_UNQUOTED(SAVED_IMAGE_SPAN,$SAVED_IMAGE_SPAN,[address span for saved images])
+ ;;
+esac
+
if test "$enable_static" = "yes" ; then
assert_arg_to_ldflags -static
assert_arg_to_ldflags -Wl,-zmuldefs
AC_MSG_RESULT([not found])
fi
-AC_ARG_ENABLE(min_pagewidth,[ --enable-min_pagewidth=xxx sets 1<<xxx byte pages],
+AC_ARG_ENABLE(min_pagewidth,[ --enable-min_pagewidth=xxx sets 1<<xxx byte pages],
[min_pagewidth=$enableval],[])
AC_MSG_CHECKING(for pagewidth)
AC_SUBST(LI_GITTAG)
LI_RELEASE="$RELEASE"
AC_SUBST(LI_RELEASE)
+#LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS $LISP_CFLAGS" | sed 's,-pg\b,,g'`\""
LI_CC="\"$GCL_CC -c `echo " $FINAL_CFLAGS" | sed 's,-pg\b,,g'`\""
AC_SUBST(LI_CC)
LI_DFP="\"$GPL_FLAG\""
-"Version_2_7_2pre17"
+"Version_2_7_2pre18"
#define SGC
#define OUTPUT_MACH bfd_mach_aarch64
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- /dev/null
+/*
+ GCL config file for Mac OS X.
+
+ To be used with the following configure switches :
+ --enable-debug (optional)
+ --enable-machine=powerpc-macosx
+ --disable-statsysbfd
+ --enable-custreloc
+
+ Aurelien Chanudet <aurelien.chanudet(at)m4x.org>
+*/
+
+/* For those who are using ACL2, please remember to enlarge your shell stack (ulimit -s 8192). */
+
+#include "bsd.h"
+
+#define DARWIN
+
+/* Mac OS X has its own executable file format (Mach-O). */
+#undef HAVE_AOUT
+#undef HAVE_ELF
+
+
+/* Alternatively, we could use the global variable vm_page_size. */
+/* #define PAGEWIDTH 12 */
+
+
+#include <unistd.h> /* to get sbrk defined */
+
+
+/** (si::save-system "...") a.k.a. unexec implementation */
+
+/* The implementation of unexec for GCL is based on Andrew Choi's work for Emacs.
+ Previous pioneering implementation of unexec for Mac OS X by Steve Nygard. */
+#define UNIXSAVE "unexmacosx.c"
+
+#undef malloc
+#define malloc my_malloc
+
+#undef free
+#define free my_free
+
+#undef realloc
+#define realloc my_realloc
+
+#undef valloc
+#define valloc my_valloc
+
+#undef calloc
+#define calloc my_calloc
+
+
+/** Dynamic loading implementation */
+
+/* The sfasl{bfd,macosx,macho}.c files are included from sfasl.c. */
+#ifdef HAVE_LIBBFD
+#define SEPARATE_SFASL_FILE "sfaslbfd.c"
+#else
+#define SPECIAL_RSYM "rsym_macosx.c"
+#define SEPARATE_SFASL_FILE "sfaslmacho.c"
+#endif
+
+/* The file has non Mach-O stuff appended. We need to know where the Mach-O stuff ends. */
+#include <stdio.h>
+extern int seek_to_end_ofile (FILE *);
+#define SEEK_TO_END_OFILE(fp) seek_to_end_ofile(fp)
+
+/** Stratified garbage collection implementation [ (si::sgc-on t) ] */
+
+/* Mac OS X has sigaction (this is needed in o/usig.c) */
+#define HAVE_SIGACTION
+
+/* Copied from {Net,Free,Open}BSD.h */
+/* Modified according to Camm's instructions on April 15, 2004. */
+#define HAVE_SIGPROCMASK
+
+/* until the sgc/save problem can be fixed. 20050114 CM*/
+/* #define SGC */
+
+#define MPROTECT_ACTION_FLAGS (SA_SIGINFO | SA_RESTART)
+
+#define INSTALL_MPROTECT_HANDLER \
+do { \
+ static struct sigaction sact; \
+ sigfillset (&(sact.sa_mask)); \
+ sact.sa_flags = MPROTECT_ACTION_FLAGS; \
+ sact.sa_sigaction = (void (*) ()) memprotect_handler; \
+ sigaction (SIGBUS, &sact, 0); \
+ sigaction (SIGSEGV, &sact, 0); \
+} while (0);
+
+#define GET_FAULT_ADDR(sig,code,sv,a) ((siginfo_t *)code)->si_addr
+
+
+/** Misc stuff */
+
+#define IEEEFLOAT
+
+/* Mac OS X does not have _fileno as in linux.h. Nor does it have _cnt as in bsd.h.
+ Let's see what we can do with this declaration found in {Net,Free,Open}BSD.h. */
+#undef LISTEN_FOR_INPUT
+#define LISTEN_FOR_INPUT(fp) \
+do {int c=0; \
+ if (((FILE *)fp)->_r <=0 && (c=0, ioctl(((FILE *)fp)->_file, FIONREAD, &c), c<=0)) \
+ return(FALSE); \
+} while (0)
+
+#define GET_FULL_PATH_SELF(a_) \
+do { \
+uint32_t bufsize = 1024; \
+static char buf [1024]; \
+static char fub [1024]; \
+if (_NSGetExecutablePath (buf, &bufsize) != 0) { \
+ error ("_NSGetExecutablePath failed"); \
+} \
+if (realpath (buf, fub) == 0) { \
+ error ("realpath failed"); \
+} \
+(a_) = fub; \
+} while (0)
+
+#define C_GC_OFFSET 4
+#include <mach-o/arm64/reloc.h>
+#define RELOC_H "mach64_aarch64_reloc.h"
+
+#define FPE_TCODE(x_) \
+ ({ufixnum _x=(x_),_y=0; \
+ switch(_x) { \
+ case FPE_FLTINV: _y=FE_INVALID;break; \
+ case FPE_FLTDIV: _y=FE_DIVBYZERO;break; \
+ case FPE_FLTOVF: _y=FE_OVERFLOW;break; \
+ case FPE_FLTUND: _y=FE_UNDERFLOW;break; \
+ case FPE_FLTRES: _y=FE_INEXACT;break; \
+ } \
+ _y; \
+ })
+#define SF(a_) ((siginfo_t *)a_)
+#define FPE_CODE(i_,v_) make_fixnum(FPE_TCODE((fixnum)SF(i_)->si_code))
+#define FPE_ADDR(i_,v_) make_fixnum((fixnum)SF(i_)->si_addr)
+#define FPE_CTXT(v_) Cnil
+
+#define FPE_INIT Cnil
+
+#include <sys/param.h>/*PATH_MAX MAXPATHLEN*/
+#undef MIN
+#undef MAX
+
+#undef sbrk
+#define sbrk msbrk
+#define INITIALIZE_BRK msbrk_init();
+
+#include <libkern/OSCacheControl.h>
+#define CLEAR_CACHE sys_icache_invalidate(memory->cfd.cfd_start,memory->cfd.cfd_size)
+
+#define W_X
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
#define NEED_STACK_CHK_GUARD
#define OUTPUT_MACH bfd_mach_arm_9
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
#define NEED_STACK_CHK_GUARD
#define OUTPUT_MACH bfd_mach_arm_9
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <spawn.h>
+#include <sys/wait.h>
+#include <mach-o/dyld.h>
+
+#ifndef POSIX_SPAWN_DISABLE_ASLR
+#define POSIX_SPAWN_DISABLE_ASLR 0x0100
+#endif
+
+void
+disable_aslr(int argc, char **argv, char **envp) {
+
+ pid_t pid;
+ posix_spawnattr_t attr;
+
+ if (!_dyld_get_image_vmaddr_slide(0)) {
+ return;
+ }
+
+ posix_spawnattr_init(&attr);
+ posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETEXEC | POSIX_SPAWN_DISABLE_ASLR);
+ if (posix_spawn(&pid, argv[0], NULL, &attr, argv, envp)) {
+ perror("posix_spawn to disable ASLR failed");
+ gcl_abort();
+ }
+ posix_spawnattr_destroy(&attr);
+
+}
/* size of immediate fixnum address space */
#undef IM_FIX_LIM
+/* heap size for raw images */
+#undef INITIAL_HEAP_VMSIZE
+
/* symbol name mangling convention */
#undef LEADING_UNDERSCORE
/* rl_readline_name returns type const char */
#undef RL_READLINE_NAME_TYPE_CONST_CHAR
+/* address span for saved images */
+#undef SAVED_IMAGE_SPAN
+
+/* address span for saved pre images */
+#undef SAVED_PRE_IMAGE_SPAN
+
/* The size of 'char', as computed by sizeof. */
#undef SIZEOF_CHAR
struct cfdata {
FRSTWRD(tt,
- cfw:LM(18),
+ cfd_nexp:LM(18),
cfd_prof:1 /* profiling */
);
--- /dev/null
+#include <mach-o/arm64/reloc.h>
+
+#define GOT_RELOC(ri) \
+ ri->r_type==ARM64_RELOC_GOT_LOAD_PAGE21|| \
+ ri->r_type==ARM64_RELOC_GOT_LOAD_PAGEOFF12|| \
+ ri->r_type==ARM64_RELOC_BRANCH26
+#define GOT_RELOC_EXTRA(ri) ri->r_type==ARM64_RELOC_BRANCH26 ? 2*sizeof(int)/sizeof(ul) : 0
+
+ case ARM64_RELOC_ADDEND:
+ addend=a;
+ break;
+ case ARM64_RELOC_BRANCH26:
+ addend=0;
+ if (labs(((long)(ri->r_pcrel ? a-(ul)q : a))/4)&(~MASK(25))) {
+ int tramp[]={0x58ffffd0, /*ldr 19bit pc relative x16*/
+ 0xd61f0200};/*br x16*/
+ got+=n1[ri->r_symbolnum].n_desc-1;
+ *got++=a;
+ memcpy(got,tramp,sizeof(tramp));
+ a=(ul)got;
+ }
+ add_vals(q,MASK(26),((long)(ri->r_pcrel ? a-(ul)q : a))/4);
+ break;
+ case ARM64_RELOC_GOT_LOAD_PAGE21:
+ got+=n1[ri->r_symbolnum].n_desc-1;
+ *got=a;
+ a=(ul)got;
+ case ARM64_RELOC_PAGE21:
+ a+=addend;
+ addend=0;
+#define PG(x) ((x) & ~0xfff)
+ a=((long)(PG(a)-PG((ul)q))) / 0x1000;
+#undef PG
+ store_val(q,MASK(2) << 29, (a & 0x3) << 29);
+ store_val(q,MASK(19) << 5, (a & 0x1ffffc) << 3);
+ break;
+ case ARM64_RELOC_GOT_LOAD_PAGEOFF12:
+ got+=n1[ri->r_symbolnum].n_desc-1;
+ *got=a;
+ a=(ul)got;
+ case ARM64_RELOC_PAGEOFF12:
+ a+=addend;
+ addend=0;
+ a&=0xfff;
+ a>>=(((*q)>>29)&0x1)* /*not add/sub*/
+ ((((*q)>>26)&0x1) ? /*simd*/
+ ((((*q)>>22)&0x3) ?
+ (((*q)>>22)&0x3)+1 : (((*q)>>30)&0x1)) :
+ (((*q)>>30)&0x3)); /*gp*/
+ store_val(q,MASK(12) << 10, a << 10);
+ break;
+ case ARM64_RELOC_UNSIGNED:
+ addend=0;
+ if (ri->r_extern || !ri->r_pcrel) {
+ add_valu(q,~0UL,ri->r_pcrel ? a-rel : a);
+ }
+ break;
#define NEED_STACK_CHK_GUARD
#define OUTPUT_MACH bfd_mach_riscv64
+
+#define ADDITIONAL_FEATURES ADD_FEATURE("NO-SIGFPE")
certain types of events; if they are used for other types of events
the value substituted is undefined.
-@table @asis{}
+@table @asis
@item @b{%%}
Replaced with a single percent.
@item @b{|%#|}
This procedure is part of the Tk script library.
Its arguments describe a dialog box:
-@table @asis{}
+@table @asis
@item @i{window}
Name of top-level window to use for dialog. Any existing window
by this name is destroyed.
The @b{focus} command can take any of the following forms:
-@table @asis{}
+@table @asis
@item @b{focus}
If invoked with no arguments, @b{focus} returns the path name of
the current focus window, or @b{none} if there is no focus window.
The @b{grab} command can take any of the following forms:
-@table @asis{}
+@table @asis
@item @b{grab }@r{?}@b{:global}@r{? }@i{window}
Same as @b{grab :set}, described below.
@item @b{grab :current }@r{?}@i{window}?
are those associated with the top-level window containing the
input focus.
Menu traversal is initiated by one of the following actions:
-@itemize @asis{}
+@itemize @asis
@item
[1]
If <F10> is typed, then the first menu button in the list for the
Once a menu has been posted, the input focus is switched to that
menu and the following actions are possible:
-@itemize @asis{}
+@itemize @asis
@item
[1]
Typing <ESC> or clicking mouse button 1 outside the menu button or
The @i{priority}@r{ arguments to the }@b{option} command are
normally specified symbolically using one of the following values:
-@table @asis{}
+@table @asis
@item @b{widgetDefault}
Level 20. Used for default values hard-coded into widgets.
@item @b{startupFile}
as long as the abbreviation is unambiguous.
-@table @asis{}
+@table @asis
@item @code{@b{:activebackground}}
@flushright
Name=@code{"@b{activeBackground}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:activeborderwidth}}
@flushright
Name=@code{"@b{activeBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:activeforeground}}
@flushright
Name=@code{"@b{activeForeground}@r{"} Class=@code{"}@b{Background}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:anchor}}
@flushright
Name=@code{"@b{anchor}@r{"} Class=@code{"}@b{Anchor}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:background or :bg}}
@flushright
Name=@code{"@b{background}@r{"} Class=@code{"}@b{Background}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:bitmap}}
@flushright
Name=@code{"@b{bitmap}@r{"} Class=@code{"}@b{Bitmap}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:borderwidth or :bd}}
@flushright
Name=@code{"@b{borderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:cursor}}
@flushright
Name=@code{"@b{cursor}@r{"} Class=@code{"}@b{Cursor}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:cursorbackground}}
@flushright
Name=@code{"@b{cursorBackground}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:cursorborderwidth}}
@flushright
Name=@code{"@b{cursorBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:cursorofftime}}
@flushright
Name=@code{"@b{cursorOffTime}@r{"} Class=@code{"}@b{OffTime}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:cursorontime}}
@flushright
Name=@code{"@b{cursorOnTime}@r{"} Class=@code{"}@b{OnTime}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:cursorwidth}}
@flushright
Name=@code{"@b{cursorWidth}@r{"} Class=@code{"}@b{CursorWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:disabledforeground}}
@flushright
Name=@code{"@b{disabledForeground}@r{"} Class=@code{"}@b{DisabledForeground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:exportselection}}
@flushright
Name=@code{"@b{exportSelection}@r{"} Class=@code{"}@b{ExportSelection}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:font}}
@flushright
Name=@code{"@b{font}@r{"} Class=@code{"}@b{Font}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:foreground or :fg}}
@flushright
Name=@code{"@b{foreground}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:geometry}}
@flushright
Name=@code{"@b{geometry}@r{"} Class=@code{"}@b{Geometry}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:insertbackground}}
@flushright
Name=@code{"@b{insertBackground}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:insertborderwidth}}
@flushright
Name=@code{"@b{insertBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:insertofftime}}
@flushright
Name=@code{"@b{insertOffTime}@r{"} Class=@code{"}@b{OffTime}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:insertontime}}
@flushright
Name=@code{"@b{insertOnTime}@r{"} Class=@code{"}@b{OnTime}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:insertwidth}}
@flushright
Name=@code{"@b{insertWidth}@r{"} Class=@code{"}@b{InsertWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:orient}}
@flushright
Name=@code{"@b{orient}@r{"} Class=@code{"}@b{Orient}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:padx}}
@flushright
Name=@code{"@b{padX}@r{"} Class=@code{"}@b{Pad}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:pady}}
@flushright
Name=@code{"@b{padY}@r{"} Class=@code{"}@b{Pad}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:relief}}
@flushright
Name=@code{"@b{relief}@r{"} Class=@code{"}@b{Relief}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:repeatdelay}}
@flushright
Name=@code{"@b{repeatDelay}@r{"} Class=@code{"}@b{RepeatDelay}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:repeatinterval}}
@flushright
Name=@code{"@b{repeatInterval}@r{"} Class=@code{"}@b{RepeatInterval}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:scrollcommand}}
@flushright
Name=@code{"@b{scrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:selectbackground}}
@flushright
Name=@code{"@b{selectBackground}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:selectborderwidth}}
@flushright
Name=@code{"@b{selectBorderWidth}@r{"} Class=@code{"}@b{BorderWidth}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:selectforeground}}
@flushright
Name=@code{"@b{selectForeground}@r{"} Class=@code{"}@b{Background}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:setgrid}}
@flushright
Name=@code{"@b{setGrid}@r{"} Class=@code{"}@b{SetGrid}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:text}}
@flushright
Name=@code{"@b{text}@r{"} Class=@code{"}@b{Text}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:textvariable}}
@flushright
Name=@code{"@b{textVariable}@r{"} Class=@code{"}@b{Variable}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:underline}}
@flushright
Name=@code{"@b{underline}@r{"} Class=@code{"}@b{Underline}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:xscrollcommand}}
@flushright
Name=@code{"@b{xScrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:yscrollcommand}}
@flushright
Name=@code{"@b{yScrollCommand}@r{"} Class=@code{"}@b{ScrollCommand}"}
the cavity it will lie against. Any one of the following options
may be used to specify a side:
-@table @asis{}
+@table @asis
@item @b{top}
Position the child's parcel against the top of the cavity,
occupying the full width of the cavity.
space may be requested for the window using any of the following
options:
-@table @asis{}
+@table @asis
@item @b{padx }@i{num}
Add @i{num} pixels to the window's requested width before computing
the parcel size as described above.
size, then the following options may be used to expand the
window to partially or completely fill the parcel:
-@table @asis{}
+@table @asis
@item @b{fill}
Set the window's size to equal the parcel size.
@item @b{fillx}
The @b{pack} command can have any of several forms, depending
on the @i{option} argument:
-@table @asis{}
+@table @asis
@item @b{pack }@i{slave }@r{?}@i{slave ...}@r{? ?}@i{options}?
If the first argument to @b{pack} is a window name (any value
starting with ``.''), then the command is processed in the same
If a slave's parcel is larger than its requested dimensions, this
option may be used to stretch the slave.
@i{Style} must have one of the following values:
-@table @asis{}
+@table @asis
@item @b{none}
Give the slave its requested dimensions plus any internal padding
requested with @b{:ipadx}@r{ or }@b{:ipady}. This is the default.
than receiving default values.
.RE
-@table @asis{}
+@table @asis
@item @b{pack :forget }@i{slave }@r{?}@i{slave ...}?
Removes each of the @i{slave}s from the packing order for its
master and unmaps their windows.
is the entire area of the master.
For each slave the packer carries out the following steps:
-@itemize @asis{}
+@itemize @asis
@item
[1]
The packer allocates a rectangular @i{parcel} for the slave
In this form the @b{place} command returns an empty string as result.
The following @i{option:value} pairs are supported:
-@table @asis{}
+@table @asis
@item @b{:in }@i{master}
@i{Master} specifes the path name of the window relative
to which @i{window} is to be placed.
rest of the arguments and the behavior of the command. The following
forms are currently supported:
-@table @asis{}
+@table @asis
@item @b{selection :clear }@i{window}
If there is a selection anywhere on @i{window}'s display, clear it
so that no window owns the selection anymore. Returns an empty string.
The command can take any of a number of different forms
depending on the @i{option} argument. The legal forms are:
-@table @asis{}
+@table @asis
@item @b{tk :colormodel }@i{window}@r{ ?}@i{newValue}?
If @i{newValue} isn't specified, this command returns the current
color model in use for @i{window}'s screen, which will be either
The following Tcl variables are either set or used by Tk at various times
in its execution:
-@table @asis{}
+@table @asis
@item @b{tk_library}
Tk sets this variable hold the name of a directory containing a library
of Tcl scripts related to Tk. These scripts include an initialization
managed by Tk. It can take any of a number of different forms,
depending on the @i{option} argument. The legal forms are:
-@table @asis{}
+@table @asis
@item @b{winfo :atom }@i{name}
Returns a decimal string giving the integer identifier for the
atom whose name is @i{name}. If no atom exists with the name
The legal forms for the @b{wm} command are:
-@table @asis{}
+@table @asis
@item @b{wm :aspect }@i{window}@r{ ?}@i{minNumer minDenom maxNumer maxDenom}?
If @i{minNumer}@r{, }@i{minDenom}@r{, }@i{maxNumer}@r{, and }@i{maxDenom}
are all specified, then they will be passed to the window manager
which it was received.
.RE
-@table @asis{}
+@table @asis
@item @b{wm :sizefrom }@i{window}@r{ ?}@i{who}?
If @i{who}@r{ is specified, it must be either }@b{program} or
@b{user}, or an abbreviation of one of these two. It indicates
@unnumberedsubsec Arguments for Button
-@table @asis{}
+@table @asis
@item @code{@b{:command}}
@flushright
Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for button widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:activate}
Change the button's state to @b{active} and redisplay the button
using its active foreground and background colors instead of normal
Tk automatically creates class bindings for buttons that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
The button activates whenever the mouse passes over it and deactivates
determine the exact behavior of the command. The following
commands are possible for listbox widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
@item @i{pathName }@b{:scan}@r{ }@i{option args}
This command is used to implement scanning on listboxes. It has
two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:scan :mark }@i{x y}
Records @i{x}@r{ and }@i{y} and the current view in the listbox
window; used in conjunction with later @b{scan dragto} commands.
This command is used to adjust the selection within a listbox. It
has several forms, depending on @i{option}. In all of the forms
the index @b{end} refers to the last element in the listbox.
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:select :adjust }@i{index}
Locate the end of the selection nearest to the element given by
@i{index}@r{, and adjust that end of the selection to be at }@i{index}
Tk automatically creates class bindings for listboxes that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
When button 1 is pressed over a listbox, the element underneath the
@unnumberedsubsec Arguments for Scale
-@table @asis{}
+@table @asis
@item @code{@b{:command}}
@flushright
Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:from}}
@flushright
Name=@code{"@b{from}@r{"} Class=@code{"}@b{From}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:label}}
@flushright
Name=@code{"@b{label}@r{"} Class=@code{"}@b{Label}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:length}}
@flushright
Name=@code{"@b{length}@r{"} Class=@code{"}@b{Length}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:showvalue}}
@flushright
Name=@code{"@b{showValue}@r{"} Class=@code{"}@b{ShowValue}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:sliderforeground}}
@flushright
Name=@code{"@b{sliderForeground}@r{"} Class=@code{"}@b{sliderForeground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:sliderlength}}
@flushright
Name=@code{"@b{sliderLength}@r{"} Class=@code{"}@b{SliderLength}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:tickinterval}}
@flushright
Name=@code{"@b{tickInterval}@r{"} Class=@code{"}@b{TickInterval}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:to}}
@flushright
Name=@code{"@b{to}@r{"} Class=@code{"}@b{To}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for scale widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
When a new scale is created, it is given the following initial
behavior by default:
-@table @asis{}
+@table @asis
@item @b{<Enter>}
Change the slider display to use @b{activeForeground} instead of
@b{sliderForeground}.
@unnumberedsubsec Arguments for Canvas
-@table @asis{}
+@table @asis
@item @code{@b{:closeenough}}
@flushright
Name=@code{"@b{closeEnough}@r{"} Class=@code{"}@b{CloseEnough}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:confine}}
@flushright
Name=@code{"@b{confine}@r{"} Class=@code{"}@b{Confine}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:scrollincrement}}
@flushright
Name=@code{"@b{scrollIncrement}@r{"} Class=@code{"}@b{ScrollIncrement}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:scrollregion}}
@flushright
Name=@code{"@b{scrollRegion}@r{"} Class=@code{"}@b{ScrollRegion}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{width}"}
the last one in the text item; this is necessary for such
tasks as inserting new text at the end of the item.
-@table @asis{}
+@table @asis
@item @i{number}
A decimal number giving the position of the desired character
within the text item.
determine the exact behavior of the command.
The following widget commands are possible for canvas widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:addtag }@i{tag searchSpec }@r{?}@i{arg arg ...}?
For each item that meets the constraints specified by
@i{searchSpec}@r{ and the }@i{arg}s, add
@i{SearchSpec}@r{ and }@i{arg}'s may take any of the following
forms:
-@table @asis{}
+@table @asis
@item @b{above }@i{tagOrId}
Selects the item just after (above) the one given by @i{tagOrId}
in the display list.
will have lower priority than all other bindings associated
with the item.
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:canvasx }@i{screenx}@r{ ?}@i{gridspacing}?
Given a screen x-coordinate @i{screenx} this command returns
the canvas x-coordinate that is displayed at that location.
command with the @b{focus} command to set the focus window to
the canvas (if it wasn't there already).
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:gettags}@r{ }@i{tagOrId}
Return a list whose elements are the tags associated with the
item given by @i{tagOrId}.
information to control the generation of Postscript. The following
options are supported:
-@table @asis{}
+@table @asis
@item @b{:colormap }@i{varName}
@i{VarName} must be the name of a global array variable
that specifies a color mapping to use in the Postscript.
This command is used to implement scanning on canvases. It has
two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:scan :mark }@i{x y}
Records @i{x}@r{ and }@i{y} and the canvas's current view; used
in conjunction with later @b{scan dragto} commands.
@i{Index} gives a textual description of a position
within @i{tagOrId}, as described in INDICES above.
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:select :adjust }@i{tagOrId index}
Locate the end of the selection in @i{tagOrId} nearest
to the character given by @i{index}, and adjust that
one of several ways (specified by the @b{:style} option).
Arcs are created with widget commands of the following form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create arc }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}?
The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give
the coordinates of two diagonally opposite corners of a
configuration.
The following options are supported for arcs:
-@table @asis{}
+@table @asis
@item @b{:extent }@i{degrees}
Specifies the size of the angular range occupied by the arc.
The arc's range extends for @i{degrees} degrees counter-clockwise
two colors, foreground and background.
Bitmaps are created with widget commands of the following form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create bitmap }@i{x y }@r{?}@i{option value option value ...}?
The arguments @i{x}@r{ and }@i{y} specify the coordinates of a
point used to position the bitmap on the display (see the @b{:anchor}
configuration.
The following options are supported for bitmaps:
-@table @asis{}
+@table @asis
@item @b{:anchor }@i{anchorPos}
@i{AnchorPos} tells how to position the bitmap relative to the
positioning point for the item; it may have any of the forms
line segments or curves.
Lines are created with widget commands of the following form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create line }@i{x1 y1... xn yn }@r{?}@i{option value option value ...}?
The arguments @i{x1}@r{ through }@i{yn} give
configuration.
The following options are supported for lines:
-@table @asis{}
+@table @asis
@item @b{:arrow }@i{where}
Indicates whether or not arrowheads are to be drawn at one or both
ends of the line.
both. Ovals are created with widget commands of the
following form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create oval }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}?
The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give
configuration.
The following options are supported for ovals:
-@table @asis{}
+@table @asis
@item @b{:fill }@i{color}
Fill the area of the oval with @i{color}.
@i{Color}@r{ may have any of the forms accepted by }@b{Tk_GetColor}.
on the display.
Polygons are created with widget commands of the following form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create polygon }@i{x1 y1 ... xn yn }@r{?}@i{option value option value ...}?
configuration.
The following options are supported for polygons:
-@table @asis{}
+@table @asis
@item @b{:fill }@i{color}
@i{Color} specifies a color to use for filling the area of the
polygon; it may have any of the forms acceptable to @b{Tk_GetColor}.
both. Rectangles are created with widget commands of the
following form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create rectangle }@i{x1 y1 x2 y2 }@r{?}@i{option value option value ...}?
The arguments @i{x1}@r{, }@i{y1}@r{, }@i{x2}@r{, and }@i{y2} give
configuration.
The following options are supported for rectangles:
-@table @asis{}
+@table @asis
@item @b{:fill }@i{color}
Fill the area of the rectangle with @i{color}, which may be
specified in any of the forms accepted by @b{Tk_GetColor}.
Text items are created with widget commands of the following
form:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:create text }@i{x y }@r{?}@i{option value option value ...}?
The arguments @i{x}@r{ and }@i{y} specify the coordinates of a
configuration.
The following options are supported for text items:
-@table @asis{}
+@table @asis
@item @b{:anchor }@i{anchorPos}
@i{AnchorPos} tells how to position the text relative to the
positioning point for the text; it may have any of the forms
configuration.
The following options are supported for window items:
-@table @asis{}
+@table @asis
@item @b{:anchor }@i{anchorPos}
@i{AnchorPos} tells how to position the window relative to the
positioning point for the item; it may have any of the forms
@unnumberedsubsec Arguments for Menu
-@table @asis{}
+@table @asis
@item @code{@b{:postcommand}}
@flushright
Name=@code{"@b{postCommand}@r{"} Class=@code{"}@b{Command}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:selector}}
@flushright
Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"}
A cascade entry posts its associated menu by invoking a
Tcl command of the form
-@table @asis{}
+@table @asis
@item @i{menu}@b{ :post }@i{x y}
command may be used to invoke various
operations on the widget. It has the following general form:
-@table @asis{}
+@table @asis
@item @i{pathName option }@r{?}@i{arg arg ...}?
@i{Option}@r{ and the }@i{arg}s
determine the exact behavior of the command.
indicators are called @i{index}es and may be specified in
any of the following forms:
-@table @asis{}
+@table @asis
@item @i{number}
Specifies the entry numerically, where 0 corresponds
to the top-most entry of the menu, 1 to the entry below it, and
or a unique abbreviation of one of the above. If additional arguments
are present, they specify any of the following options:
-@table @asis{}
+@table @asis
@item @b{:activebackground }@i{value}
Specifies a background color to use for displaying this entry when it
is active.
The @b{add} widget command returns an empty string.
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
Tk automatically creates class bindings for menus that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
When the mouse cursor enters a menu, the entry underneath the mouse
@unnumberedsubsec Arguments for Scrollbar
-@table @asis{}
+@table @asis
@item @code{@b{:command}}
@flushright
Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for scrollbar widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
and the bottom arrow. Pressing mouse button 1 in each area has
a different effect:
-@table @asis{}
+@table @asis
@item @b{top arrow}
Causes the view in the associated window to shift up by one unit
(i.e. the object appears to move down one unit in its window).
@unnumberedsubsec Arguments for Checkbutton
-@table @asis{}
+@table @asis
@item @code{@b{:command}}
@flushright
Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:offvalue}}
@flushright
Name=@code{"@b{offValue}@r{"} Class=@code{"}@b{Value}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:onvalue}}
@flushright
Name=@code{"@b{onValue}@r{"} Class=@code{"}@b{Value}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:selector}}
@flushright
Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:variable}}
@flushright
Name=@code{"@b{variable}@r{"} Class=@code{"}@b{Variable}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for check button widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:activate}
Change the check button's state to @b{active} and redisplay the button
using its active foreground and background colors instead of normal
Tk automatically creates class bindings for check buttons that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
The check button activates whenever the mouse passes over it and deactivates
@unnumberedsubsec Arguments for Menubutton
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:menu}}
@flushright
Name=@code{"@b{menu}@r{"} Class=@code{"}@b{MenuName}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for menubutton widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:activate}
Change the menu button's state to @b{active} and redisplay the menu
button using its active foreground and background colors instead of normal
Tk automatically creates class bindings for menu buttons that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
A menu button activates whenever the mouse passes over it and deactivates
@unnumberedsubsec Arguments for Text
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:wrap}}
@flushright
Name=@code{"@b{wrap}@r{"} Class=@code{"}@b{Wrap}"}
The @i{base} for an index must have one of the following forms:
-@table @asis{}
+@table @asis
@item @i{line}@b{.}@i{char}
Indicates @i{char}@r{'th character on line }@i{line}.
Lines are numbered from 1 for consistency with other UNIX programs
of the forms listed below. Keywords such as @b{chars}@r{ and }@b{wordend}
may be abbreviated as long as the abbreviation is unambiguous.
-@table @asis{}
+@table @asis
@item @b{+ }@i{count}@b{ chars}
Adjust the index forward by @i{count} characters, moving to later
lines in the text if necessary. If there are fewer than @i{count}
with the tag override the default display style.
The following options are currently supported for tags:
-@table @asis{}
+@table @asis
@item @b{:background }@i{color}
@i{Color} specifies the background color to use for characters
associated with the tag.
Selection support is implemented via tags.
If the @b{exportSelection} option for the text widget is true
then the @b{sel} tag will be associated with the selection:
-@itemize @asis{}
+@itemize @asis
@item
[1]
Whenever characters are tagged with @b{sel} the text widget
determine the exact behavior of the command. The following
commands are possible for text widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:compare}@r{ }@i{index1 op index2}
Compares the indices given by @i{index1}@r{ and }@i{index2} according
to the relational operator given by @i{op}, and returns 1 if
the command depends on the @i{option} argument that follows
the @b{mark} argument. The following forms of the command
are currently supported:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:mark :names}
Returns a list whose elements are the names of all the marks that
are currently set.
@item @i{pathName }@b{:scan}@r{ }@i{option args}
This command is used to implement scanning on texts. It has
two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:scan :mark }@i{y}
Records @i{y} and the current view in the text window; used in
conjunction with later @b{scan dragto} commands. Typically this
@b{tag} argument. The following forms of the command are currently
supported:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:tag :add }@i{tagName index1 }@r{?}@i{index2}?
Associate the tag @i{tagName} with all of the characters starting
with @i{index1} and ending just before
appear at the top of the window.
If @b{:pickplace} is specified then the widget chooses where
@i{what} appears in the window:
-@itemize @asis{}
+@itemize @asis
@item
[1]
If @i{what} is already visible somewhere in the window then the
Tk automatically creates class bindings for texts that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
Pressing mouse button 1 in an text positions the insertion cursor
@unnumberedsubsec Arguments for Entry
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
arguments. An index specifies a particular character in the entry's
string, in any of the following ways:
-@table @asis{}
+@table @asis
@item @i{number}
Specifies the character as a numerical index, where 0 corresponds
to the first character in the string.
The following commands are possible for entry widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
@item @i{pathName }@b{:scan}@r{ }@i{option args}
This command is used to implement scanning on entries. It has
two forms, depending on @i{option}:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:scan :mark }@i{x}
Records @i{x} and the current view in the entry window; used in
conjunction with later @b{scan dragto} commands. Typically this
@item @i{pathName }@b{:select }@i{option arg}
This command is used to adjust the selection within an entry. It
has several forms, depending on @i{option}:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:select :adjust }@i{index}
Locate the end of the selection nearest to the character given by
@i{index}@r{, and adjust that end of the selection to be at }@i{index}
Tk automatically creates class bindings for entries that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
Clicking mouse button 1 in an entry positions the insertion cursor
@unnumberedsubsec Arguments for Message
-@table @asis{}
+@table @asis
@item @code{@b{:aspect}}
@flushright
Name=@code{"@b{aspect}@r{"} Class=@code{"}@b{Aspect}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:justify}}
@flushright
Name=@code{"@b{justify}@r{"} Class=@code{"}@b{Justify}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for message widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
@unnumberedsubsec Arguments for Frame
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for frame widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? }@i{?value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
@unnumberedsubsec Arguments for Label
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for label widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
@unnumberedsubsec Arguments for Radiobutton
-@table @asis{}
+@table @asis
@item @code{@b{:command}}
@flushright
Name=@code{"@b{command}@r{"} Class=@code{"}@b{Command}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:height}}
@flushright
Name=@code{"@b{height}@r{"} Class=@code{"}@b{Height}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:selector}}
@flushright
Name=@code{"@b{selector}@r{"} Class=@code{"}@b{Foreground}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:state}}
@flushright
Name=@code{"@b{state}@r{"} Class=@code{"}@b{State}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:value}}
@flushright
Name=@code{"@b{value}@r{"} Class=@code{"}@b{Value}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:variable}}
@flushright
Name=@code{"@b{variable}@r{"} Class=@code{"}@b{Variable}"}
@end table
-@table @asis{}
+@table @asis
@item @code{@b{:width}}
@flushright
Name=@code{"@b{width}@r{"} Class=@code{"}@b{Width}"}
determine the exact behavior of the command. The following
commands are possible for radio-button widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:activate}
Change the radio button's state to @b{active} and redisplay the button
using its active foreground and background colors instead of normal
Tk automatically creates class bindings for radio buttons that give them
the following default behavior:
-@itemize @asis{}
+@itemize @asis
@item
[1]
The radio button activates whenever the mouse passes over it and deactivates
determine the exact behavior of the command. The following
commands are possible for toplevel widgets:
-@table @asis{}
+@table @asis
@item @i{pathName }@b{:configure}@r{ ?}@i{option}@r{? ?}@i{value option value ...}?
Query or modify the configuration options of the widget.
If no @i{option} is specified, returns a list describing all of
(in-package :fpe)
(import 'si::(disassemble-instruction feenableexcept fedisableexcept fld *fixnum *float *double
+ fetestexcept feclearexcept
*fixnum *ushort *uint fun-name
si-class-direct-subclasses si-class-name si-find-class
+fe-list+ +mc-context-offsets+ floating-point-error
function-by-address clines defentry))
(export '(break-on-floating-point-exceptions read-instruction))
+#+no-sigfpe (export '(flush-floating-point-exceptions))
(eval-when
(eval compile)
(feenableexcept a))
-#.`(let ((fpe-enabled 0))
+#.`(let ((fpe-enabled 0)(fpe-set 0))
+ #+no-sigfpe
+ (defun flush-floating-point-exceptions nil
+ (let ((x (fetestexcept fpe-set)))
+ (unless (zerop x)
+ (feclearexcept x)
+ (floating-point-error x 0 0))))
(defun break-on-floating-point-exceptions
- (&key suspend ,@(mapcar (lambda (x) `(,(car x) (logtest ,(caddr x) fpe-enabled))) +fe-list+) &aux r)
+ (&key suspend no-flush
+ ,@(mapcar (lambda (x) `(,(car x) (logtest ,(caddr x) fpe-enabled))) +fe-list+)
+ &aux r #+no-sigfpe(x (fetestexcept fpe-set)))
(fe-enable
- (if suspend 0
- (setq fpe-enabled
- (logior
- ,@(mapcar (lambda (x)
- `(cond (,(car x) (push ,(intern (symbol-name (car x)) :keyword) r) ,(caddr x))
- (0)))
- +fe-list+)))))
+ (setq fpe-set
+ (if suspend 0
+ (setq fpe-enabled
+ (logior
+ ,@(mapcar (lambda (x)
+ `(cond (,(car x)
+ (push ,(intern (symbol-name (car x)) :keyword) r)
+ ,(caddr x))
+ (0)))
+ +fe-list+))))))
+ #+no-sigfpe
+ (unless (or no-flush (zerop x)) (floating-point-error x 0 0))
r))
(defun subclasses (class)
'arithmetic-error))
(defun floating-point-error (code addr context)
- (break-on-floating-point-exceptions :suspend t)
+ (break-on-floating-point-exceptions :suspend t :no-flush t)
(restart-case
(unwind-protect
(let* ((fun (function-by-address addr))(m (read-instruction addr context)))
((lambda (&rest r) (apply 'error (if (find-package :conditions) r (list (format nil "~s" r)))))
(code-condition code)
:operation (list :insn (pop m) :op (pop m) :fun fun :addr addr) :operands m :function-name (when fun (fun-name fun))))
- (break-on-floating-point-exceptions))
+ (break-on-floating-point-exceptions :no-flush t))
(continue nil :report (lambda (s) (format s "Continue disabling floating point exception trapping"))
- (apply 'break-on-floating-point-exceptions (mapcan (lambda (x) (list x nil)) (break-on-floating-point-exceptions))))))
+ (apply 'break-on-floating-point-exceptions
+ :no-flush t
+ (mapcan (lambda (x) (list x nil))
+ (break-on-floating-point-exceptions :no-flush t))))))
(defun concatenated-stream-streams (stream)
(declare (optimize (safety 2)))
(check-type stream concatenated-stream)
- (c-stream-object0 stream))
+ (the proper-list (c-stream-object0 stream)))
(defun broadcast-stream-streams (stream)
(declare (optimize (safety 2)))
(check-type stream broadcast-stream)
- (c-stream-object0 stream))
+ (the proper-list (c-stream-object0 stream)))
(defun two-way-stream-input-stream (stream)
(declare (optimize (safety 2)))
(check-type stream two-way-stream)
- (c-stream-object0 stream))
+ (the (and stream (satisfies input-stream-p)) (c-stream-object0 stream)))
(defun echo-stream-input-stream (stream)
(declare (optimize (safety 2)))
(check-type stream echo-stream)
- (c-stream-object0 stream))
+ (the (and stream (satisfies input-stream-p)) (c-stream-object0 stream)))
(defun two-way-stream-output-stream (stream)
(declare (optimize (safety 2)))
(check-type stream two-way-stream)
- (c-stream-object1 stream))
+ (the (and stream (satisfies output-stream-p)) (c-stream-object1 stream)))
(defun echo-stream-output-stream (stream)
(declare (optimize (safety 2)))
(check-type stream echo-stream)
- (c-stream-object1 stream))
+ (the (and stream (satisfies output-stream-p)) (c-stream-object1 stream)))
(defun synonym-stream-symbol (stream)
(declare (optimize (safety 2)))
(check-type stream synonym-stream)
- (c-stream-object0 stream))
+ (the symbol (c-stream-object0 stream)))
(defun maybe-clear-input (&optional (x *standard-input*))
(typecase x
(defun get-output-stream-string (strm)
(declare (optimize (safety 1)))
(check-type strm string-output-stream)
- (let ((x (copy-seq (c-stream-object0 strm))))
+ (let ((x (copy-seq (the string (c-stream-object0 strm)))))
(c-set-stream-int strm 0)
(setf (fill-pointer (c-stream-object0 strm)) 0)
x))
(deftype binary-stream-element-type nil 'list)
(defconstant +char-shft+ (1- (integer-length char-length)))
+(declaim (inline byte-index))
+(defun byte-index (k n)
+ #+:clx-little-endian k #-:clx-little-endian (- n 1 k))
+
(defun read-byte (s &optional (eof-error-p t) eof-value &aux (i 0)(tp (stream-element-type s)))
(declare (optimize (safety 1)))
(check-type s stream)
(let* ((n (if tp (ash (cadr tp) (- +char-shft+)) 1)))
(dotimes (k n (let ((nb (ash n +char-shft+)))
(if (when (eq (car tp) 'signed-byte) (logbitp (1- nb) i)) (- i (ash 1 nb)) i)))
- (setq i (logior i (ash (let ((ch (read-char s eof-error-p eof-value)))
+ (setq i
+ (logior i
+ (ash (let ((ch (read-char s eof-error-p eof-value)))
(if (eq ch eof-value) (return ch) (char-code ch)))
- (ash k +char-shft+)))))))
+ (ash (byte-index k n) +char-shft+)))))))
(defun write-byte (j s &aux (i j) (tp (stream-element-type s)))
(declare (optimize (safety 1)))
(check-type tp binary-stream-element-type)
(let ((n (ash (cadr tp) (- +char-shft+))))
(dotimes (k n j)
- (write-char (code-char (logand i #.(1- (ash 1 char-length)))) s)
- (setq i (ash i #.(- char-length))))))
+ (write-char
+ (code-char
+ (logand
+ (ash i (ash (- (byte-index k n)) +char-shft+))
+ #.(1- (ash 1 char-length))))
+ s))))
#-pre-gcl
(defdlfun (:fixnum "fread") :fixnum :fixnum :fixnum :fixnum)
-(defun read-sequence-using-fread (seq strm tp start end &aux (fp (stream-fp strm nil)))
- #+pre-gcl
- (declare (ignore seq tp start end fp))
- #-pre-gcl
- (when fp
- (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
- (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
- (when (<= start end ln)
- (c+ start
- (|libc|:|fread|
- (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
+#.`(defun read-sequence-using-fread (seq strm tp start end &aux (fp (stream-fp strm nil)))
+ #+pre-gcl
+ (declare (ignore seq tp start end fp))
+ #-pre-gcl
+ (when fp
+ (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
+ (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
+ (when (<= start end ln)
+ (c+ start
+ (,(mdlsym "fread")
+ (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
#-pre-gcl
(defdlfun (:fixnum "fwrite") :fixnum :fixnum :fixnum :fixnum)
-(defun write-sequence-using-fwrite (seq strm tp start end &aux (fp (stream-fp strm t)))
- #+pre-gcl
- (declare (ignore seq tp start end fp))
- #-pre-gcl
- (when fp
- (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
- (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
- (when (<= start end ln)
- (c+ start
- (|libc|:|fwrite|
- (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
+#.`(defun write-sequence-using-fwrite (seq strm tp start end &aux (fp (stream-fp strm t)))
+ #+pre-gcl
+ (declare (ignore seq tp start end fp))
+ #-pre-gcl
+ (when fp
+ (when (eq tp (aref +array-stream-types+ (c-array-elttype seq)))
+ (let* ((n (ash 1 (1- (c-array-eltsize seq))))(ln (length seq))(end (or end ln)))
+ (when (<= start end ln)
+ (c+ start
+ (,(mdlsym "fwrite")
+ (c+ (c-array-self seq) (c* n start)) n (c- end start) fp)))))))
(defun write-sequence (seq strm &key (start 0) end
#ifdef HAVE_MPROTECT
if (data_start)
- massert(!gcl_mprotect(data_start,(void *)core_end-data_start,PROT_READ|PROT_WRITE|PROT_EXEC));
+ massert(!gcl_mprotect(data_start,(void *)core_end-data_start,PROT_READ|PROT_WRITE
+#ifndef W_X
+ |PROT_EXEC
+#endif
+ ));
+
+#ifdef W_X
+ {
+ struct pageinfo *v;
+ struct typemanager *tm=tm_of(t_cfdata);
+
+
+ for (v=cell_list_head;v;v=v->next)
+ if (tm->tm_type==v->type) {
+ void *p;
+ ufixnum k;
+ for (p=pagetochar(page(v)),k=0;k<tm->tm_nppage;k++,p+=tm->tm_size) {
+ object o=p;
+ if (!is_free(o) && type_of(o)==t_cfdata && (void *)o->cfd.cfd_start>=data_start)
+ gcl_mprotect((void *)o->cfd.cfd_start,o->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_EXEC);
+ }
+ }
+ }
+#endif
+
#endif
#ifdef SGC
massert(realpath(file,FN1));
ltn=make_simple_string(FN1);
memory=new_cfdata();
+ memory->d.tt=1;
memory->cfd.cfd_name=ltn;
memory->cfd.cfd_start=(char *)fn;
faslfile=open_stream(ltn,smm_input,Cnil,sKerror);
massert(!sigaction(SIGCHLD,&sa,&osa));
- switch((pid=pvfork())) {
+ switch((pid=pfork())) {
case -1:
FEerror("Cannot fork", 0);
break;
massert(setsid()>=0);
if (daemon == sKpersistent)
- switch(pvfork()) {
+ switch(pfork()) {
case -1:
FEerror("daemon fork error", 0);
break;
y=maccept(x);
- switch((pid=pvfork())) {
+ switch((pid=pfork())) {
case 0:
massert(!sigaction(SIGCHLD,&osa,NULL));
ifuncall1(server,y);
#define NEED_MP_H
#include <string.h>
#include <stdlib.h>
+#include <sys/mman.h>
#include "include.h"
#include "page.h"
continue;
}
+#ifdef W_X
+ if (type_of(x)==t_cfdata && !x->d.tt && !is_free(x))
+ gcl_mprotect((void *)x->cfd.cfd_start,x->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_WRITE);
+#endif
+
k++;
make_free(x);
static unsigned long gprof_on;
+/*all but this stub to be written in the future provided*/
+#if defined(__APPLE__) && defined(__aarch64__)
+void
+_mcleanup(void) {
+ return;
+}
+#endif
+
DEFUN("MCLEANUP",object,fSmcleanup,SI,0,0,NONE,OO,OO,OO,OO,(void),"") {
extern void _mcleanup(void);
if (depth++<=3)
switch ((tx=type_of(x))) {
case t_cons:
- h^=ihash_equal(x->c.c_car,depth)^rtb[labs(depth%(sizeof(rtb)/sizeof(*rtb)))];
+ h^=ihash_equal(x->c.c_car,depth)^rtb[labs(depth%(long)(sizeof(rtb)/sizeof(*rtb)))];
x = x->c.c_cdr;
goto BEGIN;
break;
if (depth++ <=3)
switch ((tx=type_of(x))) {
case t_cons:
- h += ihash_equalp(x->c.c_car,depth)^rtb[labs(depth%(sizeof(rtb)/sizeof(*rtb)))];
+ h += ihash_equalp(x->c.c_car,depth)^rtb[labs(depth%(long)(sizeof(rtb)/sizeof(*rtb)))];
x = x->c.c_cdr;
goto BEGIN;
break;
return uc==(ufixnum)sbrk(uv-uc) ? 0 : -1;
}
-
+
+#if defined(__CYGWIN__)||defined(__MINGW32__)
+
+#include <windows.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+ MEMORYSTATUS m;
+
+ m.dwLength=sizeof(m);
+ GlobalMemoryStatus(&m);
+ return m.dwTotalPhys>>PAGEWIDTH;
+
+}
+
+#elif defined (DARWIN)
+
+#include <sys/sysctl.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+ uint64_t s;
+ size_t z=sizeof(s);
+ int m[2]={CTL_HW,HW_MEMSIZE};
+
+ if (sysctl(m,2,&s,&z,NULL,0)==0)
+ return s>>PAGEWIDTH;
+
+ return 0;
+
+}
+
+#elif defined(__sun__)
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+ return sysconf(_SC_PHYS_PAGES);
+
+}
+
+#elif defined(FREEBSD)
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n,char ramp) {
+
+ size_t i,len=sizeof(i);
+
+ return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH;
+
+}
+
+#else /*Linux*/
+
static char *
next_line(int l,ufixnum *s) {
}
-
-#if defined(__CYGWIN__)||defined(__MINGW32__)
-
-#include <windows.h>
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
- MEMORYSTATUS m;
-
- m.dwLength=sizeof(m);
- GlobalMemoryStatus(&m);
- return m.dwTotalPhys>>PAGEWIDTH;
-
-}
-
-#elif defined (DARWIN)
-
-#include <sys/sysctl.h>
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
- uint64_t s;
- size_t z=sizeof(s);
- int m[2]={CTL_HW,HW_MEMSIZE};
-
- if (sysctl(m,2,&s,&z,NULL,0)==0)
- return s>>PAGEWIDTH;
-
- return 0;
-
-}
-
-#elif defined(__sun__)
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
- return sysconf(_SC_PHYS_PAGES);
-
-}
-
-#elif defined(FREEBSD)
-
-#include <sys/types.h>
-#include <sys/sysctl.h>
-
-static ufixnum
-get_phys_pages_no_malloc(char n,char ramp) {
-
- size_t i,len=sizeof(i);
-
- return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH;
-
-}
-
-#else /*Linux*/
-
static ufixnum
get_phys_pages_no_malloc(char freep,char ramp) {
mp=ufmin(mp,get_phys_pages1(0,0));
+#if defined(__APPLE__) && defined(__aarch64__)
+ {
+ extern unsigned long heap_vmsize;
+ mp=ufmin(mp,heap_vmsize>>PAGEWIDTH);
+ }
+#endif
+
sz=ufmin(mem_bound,log_maxpage_bound);
sz=(1UL<<sz)+((1UL<<sz)-1);
mp=ufmin(mp,page(sz));
}
+#if defined(__APPLE__) && defined(__aarch64__)
+#include "disable_mac_aslr.h"
+#endif
+
int
main(int argc, char **argv, char **envp) {
bds_top = bds_org-1;
frs_top = frs_org-1;
+#if defined(__APPLE__) && defined(__aarch64__)
+ disable_aslr(argc, argv, envp);
+#endif
+
#include "cstack.h"
gcl_init_alloc(alloca(1));
ADD_FEATURE("LARGE-MEMORY-MODEL");
#endif
+#ifdef ADDITIONAL_FEATURES
+ ADDITIONAL_FEATURES;
+#endif
+
make_special("*FEATURES*",features);}
make_si_function("SAVE-SYSTEM", siLsave_system);
static void *
new_map(void *v,ufixnum s) {
- return mmap(v,s,PROT_READ|PROT_WRITE|PROT_EXEC,MAP_PRIVATE|MAP_ANON|MAP_FIXED,-1,0);
+ return mmap(v,s,PROT_READ|PROT_WRITE
+#ifndef W_X
+ |PROT_EXEC
+#endif
+ ,MAP_PRIVATE|MAP_ANON|MAP_FIXED,-1,0);
}
#if defined(DARWIN)
but not so large that the Mac linker ignores the segment designation
and creates a __huge section under __DATA for this and other
variables. We enlarge this on unexec.*/
-asm (".zerofill __HEAP,__heap,__end,0x70000000\n\t.globl __end");
+unsigned long heap_vmsize=INITIAL_HEAP_VMSIZE;
+#define mstr(a) #a
+#define Mstr(a) mstr(a)
+asm (".zerofill __HEAP,__heap,__end," Mstr(INITIAL_HEAP_VMSIZE) "\n\t.globl __end");
#endif
int
+#ifdef __APPLE__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-function"
+#endif
+
#include "include.h"
#include "arth.h"
+#ifdef __APPLE__
+#pragma clang diagnostic pop
+#endif
+
#define EMPTY()
#define DEFER(id) id EMPTY()
* with "C" type streams.
*/
+#include <spawn.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#ifdef __APPLE__
+#include <crt_externs.h>
+#define environ (*_NSGetEnviron())
+#else
+extern char **environ;
+#endif
+
static void
spawn_process_with_streams(object istream,object ostream,char *pname,char **argv) {
- int fdin;
- int fdout;
+ int fdin,fdout,spawn_err;
+ pid_t pid;
+ posix_spawn_file_actions_t actions;
- if (istream->sm.sm_fp == NULL || ostream->sm.sm_fp == NULL)
- FEerror("Cannot spawn process with given stream", 0);
+ massert(istream->sm.sm_fp&&ostream->sm.sm_fp);
fdin = istream->sm.sm_int;
fdout = ostream->sm.sm_int;
- if (!pvfork()) {
+ massert(!posix_spawn_file_actions_init(&actions));
+ massert(!posix_spawn_file_actions_adddup2(&actions,fdin,0));
+ massert(!posix_spawn_file_actions_adddup2(&actions,fdout,1));
- /* the child --- replace standard in and out with descriptors given */
- close(0);
- massert(dup(fdin)>=0);
- close(1);
- massert(dup(fdout)>=0);
+ massert(!posix_spawn_file_actions_addclose(&actions,fileno(istream->sm.sm_fp)));
+ massert(!posix_spawn_file_actions_addclose(&actions,fileno(ostream->sm.sm_fp)));
- close(fileno(istream->sm.sm_fp));
- close(fileno(ostream->sm.sm_fp));
+ spawn_err = posix_spawnp(&pid, pname, &actions, NULL, argv, environ);
- errno=0;
- execvp(pname,argv);
- _exit(128|(errno&0x7f));
+ posix_spawn_file_actions_destroy(&actions);
- } else {
-
- close(fdin);
- close(fdout);
-
- }
+ massert(!spawn_err);
+ massert(!close(fdin));
+ massert(!close(fdout));
}
-
-
+
void
run_process(char *filename,char **argv) {
min_text=p<min_text ? p : min_text;
}
}
+ massert(min_text);
}
d=c/d;
d=d/(c+I*d);
}
+
+#if defined(__APPLE__) && defined(__aarch64__)/*FIXME non-lazy pointer support in sfaslmacho.c*/
+ extern void __chkstk_darwin(void);
+ __chkstk_darwin();
+#endif
return (int)d;
#endif
#define ALLOC_SEC(sec) ({ul _fl=sec->flags&SECTION_TYPE;\
- _fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS;})
+ (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && !(sec->flags&S_ATTR_DEBUG);})
#define LOAD_SEC(sec) ({ul _fl=sec->flags&SECTION_TYPE;\
- (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && _fl!=S_ZEROFILL;})
+ (_fl<=S_SYMBOL_STUBS || _fl==S_16BYTE_LITERALS) && _fl!=S_ZEROFILL && !(sec->flags&S_ATTR_DEBUG);})
#define MASK(n) (~(~0ULL << (n)))
STATIC_RELOC_VARS
#endif
-
-
static int
-ovchk(ul v,ul m) {
+ovchks(ul v,ul m) {
m|=m>>1;
v&=m;
}
+static int
+ovchku(ul v,ul m) {
+
+ return !(v&=m);
+
+}
+
static int
store_val(ul *w,ul m,ul v) {
- massert(ovchk(v,~m));
*w=(v&m)|(*w&~m);
return 0;
}
+static int
+store_valu(ul *w,ul m,ul v) {
+
+ massert(ovchku(v,~m));
+ return store_val(w,m,v);
+
+ return 0;
+
+}
+
+static int
+store_vals(ul *w,ul m,ul v) {
+
+ massert(ovchks(v,~m));
+ return store_val(w,m,v);
+
+}
+
+#ifdef W_X
+static int
+add_vals(ul *w,ul m,ul v) {
+
+ return store_vals(w,m,v+(*w&m));
+
+}
+
+static int
+add_valu(ul *w,ul m,ul v) {
+
+ return store_valu(w,m,v+(*w&m));
+
+}
+#endif
+
#ifndef _LP64
/*redirect trampolines gcc-4.0 gives no reloc for stub sections on x86 only*/
static int
struct scattered_relocation_info *sri=(void *)ri;
ul *q=(void *)(sec->addr+(sri->r_scattered ? sri->r_address : ri->r_address));
ul a,rel=(ul)(q+1);
+#ifdef W_X
+ static ul addend;
+#endif
if (sri->r_scattered)
a=sri->r_value;
else if (ri->r_extern)
a=n1[ri->r_symbolnum].n_value;
else
- a=start;
+ a=ri->r_symbolnum;
switch(sri->r_scattered ? sri->r_type : ri->r_type) {
}
static int
-relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start) {
+relocate_symbols(struct nlist *n1,struct nlist *ne,char *st1,ul start,struct section *sec1) {
struct nlist *n;
struct node *nd;
for (n=n1;n<ne;n++)
if (n->n_sect)
- n->n_value+=start;
+ n->n_value+=start+sec1[n->n_sect-1].reserved3;
else if ((nd=find_sym_ptable(st1+n->n_un.n_strx)))
n->n_value=nd->address;
else if (n->n_type&(N_PEXT|N_EXT))
load_memory(struct section *sec1,struct section *sece,void *v1,
ul *p,ul **got,ul **gote,ul *start) {
- ul sz,gsz,sa,ma,a,fl;
+ ul sz,gsz,ma,a,fl;
+ volatile ul sa;
struct section *sec;
object memory;
+#ifdef W_X
+ ul text_pbits;
+#endif
BEGIN_NO_INTERRUPT;
+ for (sec=sec1;sec<sece;sec++)
+ sec->reserved3=0;/*FIXME unneeded?*/
+
+ gsz=**got ? (**got+1)*sizeof(**got)-1 : 0;
+
+#ifdef W_X
+
+ massert(sece>sec1);
+ massert(ALLOC_SEC(sec1));
+ massert(sec1->flags&(S_ATTR_SOME_INSTRUCTIONS|S_ATTR_PURE_INSTRUCTIONS));
+ massert(!sec1->addr);
+ for (sec=sec1+1,sa=-1;sec<sece;sec++)
+ if (ALLOC_SEC(sec) && sa>sec->addr)
+ sa=sec->addr;
+ text_pbits=(sa+gsz+PAGESIZE-1)>>PAGEWIDTH;
+ sa=(text_pbits<<PAGEWIDTH)+(sa&0xf)-sa;
+ for (sec=sec1+1;sec<sece;sec++)
+ sec->addr+=(sec->reserved3=sa);
+
+#endif
+
for (*p=sz=ma=0,sa=-1,sec=sec1;sec<sece;sec++)
if (ALLOC_SEC(sec)) {
ma=ma>sizeof(struct contblock) ? ma-1 : 0;
sz+=ma;
- gsz=0;
- if (**got) {
- gsz=(**got+1)*sizeof(**got)-1;
- sz+=gsz;
- }
-
+ sz+=gsz;
+
memory=new_cfdata();
- memory->cfd.cfd_size=sz;
+ memory->cfd.cfd_size=sz;
+#ifdef W_X
+ memory->cfd.cfd_start=alloc_code_space(sz+PAGESIZE-sizeof(struct contblock),-1UL);
+ memory->cfd.cfd_start=(void *)(((ul)memory->cfd.cfd_start+(PAGESIZE-1))&~(PAGESIZE-1));
+ memory->cfd.cfd_nexp=text_pbits;
+#else
memory->cfd.cfd_start=alloc_code_space(sz,-1UL);
+#endif
a=(ul)memory->cfd.cfd_start;
a=(a+ma)&~ma;
for (sec=sec1;sec<sece;sec++)
if (ALLOC_SEC(sec)) {
- sec->addr+=a;
+ sec->addr+=a;
if (LOAD_SEC(sec))
memcpy((void *)sec->addr,v1+sec->offset,sec->size);
else
if (**got) {
sz=**got;
+#ifdef W_X
+ *got=(void *)memory->cfd.cfd_start+(text_pbits<<PAGEWIDTH)-gsz;
+#else
*got=(void *)memory->cfd.cfd_start+memory->cfd.cfd_size-gsz;
+#endif
gsz=sizeof(**got)-1;
*got=(void *)(((ul)*got+gsz)&~gsz);
*gote=*got+sz;
#ifndef GOT_RELOC
#define GOT_RELOC(a) 0
#endif
+#ifndef GOT_RELOC_EXTRA
+#define GOT_RELOC_EXTRA(a) 0
+#endif
static int
label_got_symbols(void *v1,struct section *sec,struct nlist *n1,struct nlist *ne,ul *gs) {
- struct relocation_info *ri,*re;
+ struct relocation_info *ri,*re;/*scattered?*/
struct nlist *n;
*gs=0;
massert(ri->r_extern);
n=n1+ri->r_symbolnum;
- if (!n->n_desc)
+ if (!n->n_desc) {
n->n_desc=++*gs;
+ (*gs)+=GOT_RELOC_EXTRA(ri);
+ }
}
static int
clear_protect_memory(object memory) {
+#ifndef W_X
+
void *p,*pe;
p=(void *)((unsigned long)memory->cfd.cfd_start & ~(PAGESIZE-1));
pe=(void *)((unsigned long)(memory->cfd.cfd_start+memory->cfd.cfd_size + PAGESIZE-1) & ~(PAGESIZE-1));
-
return gcl_mprotect(p,pe-p,PROT_READ|PROT_WRITE|PROT_EXEC);
+#else
+
+ return gcl_mprotect((void *)memory->cfd.cfd_start,memory->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_EXEC);
+
+#endif
+
}
massert(p=alloca(rls));
- relocate_symbols(n1,ne,st1,start);
+ relocate_symbols(n1,ne,st1,start,sec1);
find_init_address(n1,ne,st1,&init_address);
massert(!clear_protect_memory(memory));
-#ifdef CLEAR_CACHE
+#if defined(HAVE_BUILTIN_CLEAR_CACHE)
+ __builtin___clear_cache((void *)memory->cfd.cfd_start,(void *)memory->cfd.cfd_start+memory->cfd.cfd_size);
+#elif defined(CLEAR_CACHE)
CLEAR_CACHE;
#endif
massert(!un_mmap(v1,ve));
if(symbol_value(sLAload_verboseA)!=Cnil) {
- printf(";; start address for %.*s %p\n",
- (int)VLEN(memory->cfd.cfd_name),memory->cfd.cfd_name->st.st_self,
- memory->cfd.cfd_start);
+ coerce_to_filename(memory->cfd.cfd_name,FN1);
+ printf(";; start address for %s %p\n",FN1,memory->cfd.cfd_start);
fflush(stdout);
}
if (TYPEWORD_TYPE_P(v->type) && x->d.s == SGC_NORMAL)
continue;
#endif
+
+#ifdef W_X
+ if (type_of(x)==t_cfdata && !x->d.tt && !is_free(x))
+ gcl_mprotect((void *)x->cfd.cfd_start,x->cfd.cfd_nexp<<PAGEWIDTH,PROT_READ|PROT_WRITE);
+#endif
k++;
make_free(x);
curr_header_offset += lc->cmdsize;
}
+static void
+copy_linkedit (struct load_command *lc, long delta) {
+
+ struct linkedit_data_command *ldc=(struct linkedit_data_command *)lc;
+
+ ldc->dataoff+=delta;
+ copy_other ((void *)ldc);
+
+}
+
+typedef struct {
+ uint32_t magic; /* 0xfade0cc0 */
+ uint32_t length; /* Total length of SuperBlob */
+ uint32_t count; /* Number of sub-blobs (usually 1 or 2) */
+} CS_SuperBlob;
+
+typedef struct {
+ uint32_t type; /* 0 for CodeDirectory, 5 for Entitlements */
+ uint32_t offset; /* Offset from start of SuperBlob */
+} CS_BlobIndex;
+
+typedef struct {
+ uint32_t magic; /* 0xfade0c02 */
+ uint32_t length; /* Length of this blob */
+ uint32_t version; /* 0x20400 for ARM64 compatibility */
+ uint32_t flags; /* Ad-hoc is usually 0 or 0x2 (adhoc) */
+ uint32_t hashOffset; /* Offset to the hashes from start of this blob */
+ uint32_t identOffset; /* Offset to the identifier string */
+ uint32_t nSpecialSlots; /* Number of special slots (usually 0 for ad-hoc) */
+ uint32_t nCodeSlots; /* Number of 4K pages in the file */
+ uint32_t codeLimit; /* Total size of file being signed */
+ uint8_t hashSize; /* 32 for SHA-256 */
+ uint8_t hashType; /* 2 for SHA-256 */
+ uint8_t platform; /* 0 */
+ uint8_t pageSize; /* 12 (means 2^12 = 4096) */
+ uint32_t spare2; /* 0 */
+ /* Version 0x20400 adds: */
+ uint32_t scatterOffset; /* 0 */
+ uint32_t teamOffset; /* 0 or offset to Team ID string */
+ uint32_t spare3; /* 0 */
+ uint64_t codeLimit64; /* 0 (unless file > 4GB) */
+ uint64_t execSegBase; /* File offset of the __TEXT segment */
+ uint64_t execSegLimit; /* Size of the __TEXT segment */
+ uint64_t execSegFlags; /* Flags (CS_EXECSEG_*) */
+} CS_CodeDirectory;
+
+typedef struct {
+ uint32_t magic; /* 0xfade0c01 (Requirements Set) */
+ uint32_t length; /* Total length of this blob (usually 12 for empty sets) */
+ uint32_t count; /* Number of Requirements in this set (0 for ad-hoc) */
+ /* Requirement Index entries follow if count > 0 */
+} CS_Requirements;
+
+typedef struct {
+ uint32_t magic; /* 0xfade0b01 (CSMAGIC_BLOBWRAPPER) */
+ uint32_t length; /* Total length of header + CMS data */
+} CS_BlobWrapper;
+
+#include <CommonCrypto/CommonDigest.h>
+/*void calculate_page_hash(const void *data, size_t len, uint8_t *out_hash) {*/
+
+#define uassert(a_) \
+ ({errno=0; \
+ if (!(a_)) { \
+ emsg("The assertion %s on line %d of %s in function %s failed: %s", \
+ #a_,__LINE__,__FILE__,__FUNCTION__,strerror(errno)); \
+ do_gcl_abort(); \
+ };})
+#define mwrite(a,b) uassert(write(outfd,(a),(b))==(b));
+#define mpwrite(a,b,c) uassert(pwrite(outfd,(a),(b),(c))==(b));
+#define mpred(a,b,c) uassert(pread(outfd,(a),(b),(c))==(b))
+#define RNDUP(x,y) (((x)+(y)-1)&~((y)-1))
+
+int
+dump_code_signature(struct segment_command *le_seg,
+ struct segment_command *tx_seg,
+ unsigned long le_ho,int csf) {
+
+ struct linkedit_data_command ldc={LC_CODE_SIGNATURE,16,0,0};
+ CS_SuperBlob sb;
+ CS_BlobIndex bi[3];
+ CS_CodeDirectory cd;
+ CS_Requirements rq;
+ CS_BlobWrapper cms;
+ const char *id="GCL";
+ const long nss=2,ss=32,id_len=RNDUP(strlen(id)+1,8);
+ long cd_len,len,np,i;
+ uint8_t hash[32],data[PAGESIZE];
+ void *v;
+
+
+ lseek(outfd,0,SEEK_END);
+ len=lseek(outfd,0,SEEK_CUR);
+ if (len%16) {
+ unsigned long x=0;
+ mwrite(&x,sizeof(x));
+ len=lseek(outfd,0,SEEK_CUR);
+ }
+ ldc.dataoff=len;
+
+ np=RNDUP(len,PAGESIZE)>>PAGEWIDTH;
+ cd_len=sizeof(cd)+id_len+(nss+np)*ss;
+ ldc.datasize=sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)+sizeof(cms);
+
+ mpwrite(&ldc,sizeof(ldc),curr_header_offset);
+ curr_header_offset+=ldc.cmdsize;
+
+ le_seg->filesize+=ldc.datasize;
+ le_seg->vmsize+=RNDUP(ldc.datasize,PAGESIZE);
+ mpwrite(le_seg,sizeof(*le_seg),le_ho);
+
+ uassert(curr_header_offset<=text_seg_lowest_offset);
+
+#if VERBOSE
+ printf ("%ld unused bytes follow Mach-O header\n",
+ text_seg_lowest_offset - curr_header_offset);
+#endif
+
+ mh.sizeofcmds=curr_header_offset-sizeof(mh);
+ mh.ncmds+=(1-csf);
+ mpwrite(&mh,sizeof(mh),0);
+
+ sb.magic=htonl(0xfade0cc0);
+ sb.length=htonl(sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq)+sizeof(cms));
+ sb.count=htonl(sizeof(bi)/sizeof(*bi));
+ mwrite(&sb,sizeof(sb));
+
+ bi[0].type=htonl(0);
+ bi[0].offset=htonl(sizeof(sb)+sizeof(bi));
+ bi[1].type=htonl(2);
+ bi[1].offset=htonl(sizeof(sb)+sizeof(bi)+cd_len);
+ bi[2].type=htonl(0x10000);
+ bi[2].offset=htonl(sizeof(sb)+sizeof(bi)+cd_len+sizeof(rq));
+ mwrite(&bi,sizeof(bi));
+
+ cd.magic=htonl(0xfade0c02);
+ cd.length=htonl(cd_len);
+ cd.version=htonl(0x20400);
+ cd.flags=htonl(2);
+ cd.hashOffset=htonl(cd_len-np*ss);
+ cd.identOffset=htonl(sizeof(cd));
+ cd.nSpecialSlots=htonl(nss);
+ cd.nCodeSlots=htonl(np);
+ cd.codeLimit=htonl(len<0x100000000 ? len : 0);
+ cd.hashSize=32;
+ cd.hashType=2;
+ cd.platform=0;
+ cd.pageSize=PAGEWIDTH;
+ cd.spare2=0;
+ cd.scatterOffset=htonl(0);
+ cd.teamOffset=htonl(0);
+ cd.spare3=htonl(0);
+ cd.codeLimit64=htonll(len>=0x100000000 ? len : 0);
+ cd.execSegBase=htonll(tx_seg->fileoff);
+ cd.execSegLimit=htonll(tx_seg->filesize);
+ cd.execSegFlags=htonll(1);
+ mwrite(&cd,sizeof(cd));
+
+ uassert(v=alloca(id_len));
+ uassert(memset(v,0,id_len));
+ uassert(strcpy(v,id));
+ mwrite(v,id_len);
+
+ rq.magic=htonl(0xfade0c01);
+ rq.length=htonl(12);
+ rq.count=htonl(0);
+ CC_SHA256(&rq,sizeof(rq),hash);
+ mwrite(hash,sizeof(hash));
+
+ uassert(memset(hash,0,sizeof(hash)));
+ mwrite(hash,sizeof(hash));
+
+ for (i=0;i<np;i++) {
+ uassert(memset(data,0,sizeof(data)));
+ mpred(data,i==np-1 ? ntohl(cd.codeLimit)-(i<<PAGEWIDTH) : sizeof(data),i<<PAGEWIDTH);
+ CC_SHA256(data,sizeof(data),hash);
+ mwrite(hash,sizeof(hash));
+ }
+
+ mwrite(&rq,sizeof(rq));
+
+ cms.magic=htonl(0xfade0b01);
+ cms.length=htonl(8);
+ mwrite(&cms,sizeof(cms));
+
+ return 0;
+
+}
+
/* Loop through all load commands and dump them. Then write the Mach
header. */
static void
dump_it () {
- int i;
- long linkedit_delta=0,linkedit_vmdelta=0;
+ int i,csf=0;
+ long linkedit_delta=0,linkedit_vmdelta=0,linkedit_vmsize=0,text_vmaddr=0;
+ struct segment_command *le_seg=NULL,*tx_seg=NULL;
+ unsigned long le_ho=0;
#if VERBOSE
printf ("--- Load Commands written to Output File ---\n");
#endif
+
+ for (i=0;i<nlc;i++)
+ switch(lca[i]->cmd) {
+ case LC_SEGMENT:
+ if (strncmp (((struct segment_command *) lca[i])->segname, SEG_LINKEDIT, 16) == 0) {
+ linkedit_vmsize=((struct segment_command *) lca[i])->vmsize;
+ le_seg=(struct segment_command *)lca[i];
+ } else if (strncmp (((struct segment_command *) lca[i])->segname, SEG_TEXT, 16) == 0) {
+ text_vmaddr=((struct segment_command *) lca[i])->vmaddr;
+ tx_seg=(struct segment_command *)lca[i];
+ }
+ }
+ uassert(le_seg&&tx_seg);
for (i = 0; i < nlc; i++)
switch (lca[i]->cmd) {
extern char *data_start;
struct section *sectp = (struct section *) (scp + 1);
unsigned long header_offset=curr_header_offset + sizeof (struct segment_command);
+ extern int in_pre_gcl;/*support libboot.so*/
+ unsigned long heap_vmsize= \
+ (in_pre_gcl ? SAVED_PRE_IMAGE_SPAN : SAVED_IMAGE_SPAN) - \
+ (long)((long)data_start-text_vmaddr) - \
+ linkedit_vmsize;
+
+ if (core_end-data_start>heap_vmsize)
+ unexec_error ("data exceeds __HEAP vmsize");
scp->vmaddr=(long)data_start;
- linkedit_vmdelta=(1UL<<37)-scp->vmsize;
- scp->vmsize=(1UL<<37);
+ linkedit_vmdelta=heap_vmsize-scp->vmsize;
+ scp->vmsize=heap_vmsize;
scp->fileoff=curr_file_offset;
scp->filesize=core_end-data_start;
scp->maxprot=VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE;
sectp->addr=scp->vmaddr;
sectp->size=scp->filesize;
sectp->flags=S_REGULAR;
+ sectp->offset=scp->fileoff;
if (!unexec_write (header_offset, sectp, sizeof (struct section)))
unexec_error ("cannot write section _HEAP's header");
unexec_error ("cannot handle multiple LINKEDIT segments in input file");
linkedit_delta = curr_file_offset - scp->fileoff;
scp->vmaddr+=linkedit_vmdelta;
+ le_ho=curr_header_offset;
copy_segment (lca[i]);
} else
copy_segment (lca[i]);
copy_dyld_info (lca[i], linkedit_delta);
break;
#endif
+ case LC_CODE_SIGNATURE:
+ csf=1;
+ break;
+ case LC_DATA_IN_CODE:
+ case LC_FUNCTION_STARTS:
+ case LC_DYLD_EXPORTS_TRIE:
+ copy_linkedit(lca[i],linkedit_delta);/*FIXME*/
+ break;
default:
copy_other (lca[i]);
break;
}
-
- if (curr_header_offset > text_seg_lowest_offset)
- unexec_error ("not enough room for load commands for new __DATA segments");
-
-#if VERBOSE
- printf ("%ld unused bytes follow Mach-O header\n",
- text_seg_lowest_offset - curr_header_offset);
-#endif
-
- mh.sizeofcmds = curr_header_offset - sizeof (struct mach_header);
- if (!unexec_write (0, &mh, sizeof (struct mach_header)))
- unexec_error ("cannot write final header contents");
+
+ dump_code_signature(le_seg,tx_seg,le_ho,csf);
}
if ((infd = open (infile, O_RDONLY, 0)) < 0)
unexec_error ("cannot open input file `%s'", infile);
- if ((outfd = open (outfile, O_WRONLY | O_TRUNC | O_CREAT, 0755)) < 0) {
+ if ((outfd = open (outfile, O_RDWR | O_TRUNC | O_CREAT, 0755)) < 0) {
close (infd);
unexec_error ("cannot open output file `%s'", outfile);
}
#ifdef HAVE_MALLOC_ZONE_MEMALIGN
static void *
-stub_memalign(size_t boundary, size_t size) {
+stub_memalign(malloc_zone_t *zone,size_t boundary, size_t size) {
extern void *my_malloc (size_t);
void *v=my_malloc(size+boundary-1);
char *c;
const char *x1[]={"/bin/sh","-c",NULL,NULL},*spc=" \n\t",**p1,**pp,**pe;
int s;
- pid_t pid;
+ pid_t pid,pid1;
posix_spawnattr_t attr;
posix_spawn_file_actions_t file_actions;
extern char **environ;
massert(!posix_spawn_file_actions_destroy(&file_actions));
massert(pid>0);
- massert(pid==waitpid(pid,&s,0));
+
+ for (;(pid1=waitpid(pid,&s,0))!=pid && errno==EINTR;);
+ massert(pid==pid1);
if ((s>>8)&128)
emsg("execvp failure when executing '%s': %s\n",command,strerror((s>>8)&0x7f));
}
+DEFUN("FETESTEXCEPT",object,fSfetestexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x),"") {
+
+ RETURN1((object)(long)fetestexcept(x));
+
+}
+
+DEFUN("FECLEAREXCEPT",object,fSfeclearexcept,SI,1,1,NONE,II,OO,OO,OO,(fixnum x),"") {
+
+ RETURN1((object)(long)feclearexcept(x));
+
+}
+
DEFUN("FEDISABLEEXCEPT",object,fSfedisableexcept,SI,0,0,NONE,IO,OO,OO,OO,(void),"") {
fixnum x=0;
return elt;
break;
default:
+ {short s;
+ xdr_short(xdrp,&s);
+ }/*ensure stub*/
FEerror("unsupported xdr ~a",1,elt);
return elt;
break;
(t t)))
(defun class-applicable-using-class-p (specl type)
- (let ((pred (memq specl (if (eq *boot-state* 'complete)
+ (let* ((pred (memq specl (if (eq *boot-state* 'complete)
(class-precedence-list type)
- (early-class-precedence-list type)))))
+ (early-class-precedence-list type))))
+ ;FIXME C compiler bug workaround ignored variadic decl macosx arm
+ (scp (unless (or pred *in-precompute-effective-methods-p*)
+ (superclasses-compatible-p specl type))))
(values pred
(or pred
(if (not *in-precompute-effective-methods-p*)
;; classes might get common subclass
- (superclasses-compatible-p specl type)
+ scp
;; worry only about existing classes
(classes-have-common-subclass-p specl type))))))